我已经将Maven的库安装到〜/ .m2/repository /目录中.我想将该路径添加到默认的Clojure类路径.我找不到文档如何做到这一点.
任何提示?
干杯!
clj
Clojure 1.4.0
user=> (require '[clojure.java.jmx :as jmx])
FileNotFoundException Could not locate clojure/java/jmx__init.class or clojure/java/jmx.clj on classpath: clojure.lang.RT.load (RT.java:432)
Run Code Online (Sandbox Code Playgroud)
默认情况下,类路径为:
user=> (println (seq (.getURLs (java.lang.ClassLoader/getSystemClassLoader))))
(#<URL file:/Users/myuser/cljmx/> #<URL file:/usr/local/Cellar/clojure/1.4.0/clojure-1.4.0.jar> #<URL file:/Users/myuser/cljmx/>)
nil
Run Code Online (Sandbox Code Playgroud)
Art*_*ldt 11
通过保持与项目关联的类路径的设置,Leiningen确实使这个过程变得更加痛苦,更重要的是导致可重复的构建过程.你可以在几年后回到这个项目,仍然可以获得一个repl.在这些情况下使用leiningen的概述:
这假设你正在使用的库不是maven仓库中的一个包的一部分或者是可用的,很多都是.
Joo*_*aat 10
非痛苦,流行的方法是不要直接使用maven和类路径以及JRE,并使用leiningen:https://github.com/technomancy/leiningen/
否则,你可以修改任何内容,clj并以java喜欢的方式添加/设置类路径.请参阅例如在java类路径中设置多个jar
bmi*_*are 10
应该注意的是,您还可以选择在运行时使用库石榴添加类路径https://github.com/cemerick/pomegranate
这可以让你这样做:
(require '[cemerick.pomegranate :as pom])
(pom/add-classpath "/home/user/~.m2/....")
Run Code Online (Sandbox Code Playgroud)
我假设这clj是一个启动Clojure REPL的脚本.看一下这个脚本,找到与此类似的行:
java -cp /path/to/clojure.jar clojure.main
Run Code Online (Sandbox Code Playgroud)
在这里,你开始clojure.main在类路径上有"clojure.jar".要添加更多罐子,只需将它们添加到-cp选项值的末尾即可.例如在Linux上:
java -cp /path/to/clojure.jar:/path/to/mylib.jar clojure.main
Run Code Online (Sandbox Code Playgroud)
(;而不是:在Windows上使用)
但是,很快你会厌倦这种方式并寻找项目管理工具.所以现在开始使用它是有道理的.看看Leiningen - 它基于Maven为你管理依赖(因此添加新jar非常容易)并且有REPL.
| 归档时间: |
|
| 查看次数: |
15773 次 |
| 最近记录: |