java - How to load program resources in Clojure -


how load program resources such icons, strings, graphical elements, scripts, , on in clojure program? using project layout similar in many java projects there "resources" directory hanging off of "source" directory. jar file created source , includes resources, can't seem resources loaded in java.

the first thing tried like

(classloader/getsystemresource "resources/myscript.js") 

but never find resource.

you can similar with

...   (let [cls (.getclass net.mydomain.somenamespace)         strm (.getresourceasstream cls name)        ] ... 

where name name of resource load, stream nil.

you can try using context class loader like

...  (let [thr (thread/currentthread)       ldr (.getcontextclassloader thr)       strem (.getresourceasstream ldr name)] ... 

but strem nil.

in frustration, i've tried placing resource files in every directory in program. copied jar correctly, still can't seem load them.

i've looked @ language sources load function , run-time library, not "getting" it.

any appreciated.

edit: here's more concrete example. in java, if wanted convert markdown html, might use showdown.js script , write like:

package scriptingtest;  import java.io.inputstreamreader; import javax.script.invocable; import javax.script.scriptengine; import javax.script.scriptenginemanager;  public class example {      private object converter;      public string transformmarkdown(string markdownstring) {         scriptenginemanager manager = new scriptenginemanager();         scriptengine engine = manager.getenginebyname("js");         try {             engine.eval(new inputstreamreader(getclass().getresourceasstream(                     "resources/showdown.js")));             converter = engine.eval("new showdown.converter()");         } catch (exception e) {             return "failed create converter";         }         try {             return ((invocable) engine).invokemethod(converter, "makehtml",                     markdownstring).tostring();         } catch (exception e) {             return "conversion failed";         }     }      public static void main(string[] args) {         system.out.println(new example().transformmarkdown("plain, *emphasis*, **strong**"));     } } 

when create project, gets compiled , packed jar. when run, program outputs <p>plain, <em>emphasis</em>, <strong>strong</strong></p>

a literal translation clojure seems pretty straightforward, run trouble trying create inputstreamreader -- can't seem write code needed find script file in jar.

edit: added "markdown" tag since post gives 2 complete examples of approaches processing markdown.

(clojure.java.io/resource "myscript.js") 

Comments

Popular posts from this blog

c++ - Convert big endian to little endian when reading from a binary file -

C#: Application without a window or taskbar item (background app) that can still use Console.WriteLine() -

unicode - Are email addresses allowed to contain non-alphanumeric characters? -