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