栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在Clojure中加载程序资源

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在Clojure中加载程序资源

这是目录结构。

继续操作OP中的脚本引擎示例,Clojure等效项为:

(ns com.domain.example  (:gen-class)  (:import (java.io InputStreamReader))  (:import (javax.script scriptEngineManager scriptEngine)))(defn load-resource  [name]  (let [rsc-name (str "com/domain/resources/" name)        thr (Thread/currentThread)        ldr (.getContextClassLoader thr)]    (.getResourceAsStream ldr rsc-name)))(defn markdown-to-html  [mkdn]  (let [manager (new scriptEngineManager)        engine (.getEngineByName manager "js")        is (InputStreamReader. (load-resource "showdown.js"))        _ (.eval engine is)        cnv-arg (str "new Showdown.converter().makeHtml("" mkdn "")")]    (.eval engine cnv-arg)))(defn -main  []  (println (markdown-to-html "plain, *emphasis*, **strong**")))

请注意,该资源的路径是

com/domain/resources
针对此代码的,而不是
com/domain/scriptingtest/resources
Java版本。在clojure版本中,源文件
example.clj
位于中
com/domain
。在Java版本中,源文件
Example.java
位于
com/domain/scriptingtest
软件包中。

在我的IDE
NetBeans中设置项目时,Java项目向导会要求提供源的封装包。Clojure插件enclojure要求一个名称空间,而不是一个包。我以前从未注意到这种差异。因此,预期的目录结构中的“
off-by-one”错误。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/470445.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号