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
Post a Comment