来自clojure的require
套餐很容易:
user=> (require 'clojure.core)
nil
但是如何在Clojure中需要.jar
文件?
(我正在努力学习lein
。Leiningen对大型项目而不是小型脚本非常有用。所以我想弄清楚什么是使用{{1}的最佳方法在我的Clojure脚本和REPL中打包。)
答案 0 :(得分:4)
虽然可以在Pomegranate库的帮助下在运行时向应用程序添加jar,但我们强烈建议不要这样做:
我想我正在重复其他受访者,但我认为我会添加点来验证他们的建议。
事实上,lein2在封面下使用了石榴,只是为了在需要依赖之后不必重新启动REPL。它仅用于开发目的。
答案 1 :(得分:3)
我认为你不能。必须在类路径上使用JAR启动REPL。
答案 2 :(得分:1)
查看Pomegranate库。
答案 3 :(得分:1)
因此,在Ubuntu 14.04上检查man clojure
我的REPL后,我选择了-cp
选项(这是-classpath
的缩写):
clojure -cp ./path/to/package.jar
user=> (require `clojure.package)
事实上,作为参考,我想分享使用jar
库的示例。因为它可能对不熟悉Java(以及所有机器)的人有用,但是想要使用这个好的lisp来编写脚本/短小程序,因此不需要leiningen。
示例是:您想要解析一些包含CSV内容的文件并以某种方式使用它。
clojure.java.io
,data.csv
在the link from the README后data.csv.jar
下载classpath
:http://search.maven.org/remotecontent?filepath=org/clojure/data.csv/0.1.4/data.csv-0.1.4.jar
将其放入当前工作目录并打开REPL,添加clojure -cp ./data.csv-0.1.4.jar
Clojure 1.4.0
user=> ; now you have it
user=> (require '[clojure.data.csv :as csv])
nil
user=>
的路径:
{{1}}
答案 4 :(得分:0)
您可以使用此solution。
在repl中:
user=>(def cl (-> (Thread/currentThread) (.getContextClassLoader)))
;; need load dependicies before, using the same method
user=>(-> cl (.addURL (java.net.URL. "file:///c:/Users/dev/m2/repository/cheshire/cheshire/5.3.1/cheshire-5.3.1.jar")))
user=>(require '[cheshire.core :as json])