好。所以这是我的问题:我在Clojure中创建数据解析器。我的程序的一部分是它必须能够绘制数据图形。我想,我将使用jFreeChart。但是,我绝对没有IDEA如何在JAR文件中包含内容。我的意思是:如果我的类路径中有app.jar文件,我似乎无法做到:
导入app.thing.thing2
不要将类路径更改为jar文件。
这里的想法是我不认为我可以改变我的类路径,因为我需要设置它来运行Clojure(或者我呢?)。全局类路径当前是/ usr / share / java。
请不要让我使用Maven,Ant或任何项目构建工具,除非这是唯一的方法。这是一个供个人使用的脚本,不需要或不需要大量的开销。
我想知道我是否应该解压缩每个JAR文件,以便我可以引用目录结构?这不好吗?
如果您需要任何澄清,请告诉我们!
答案 0 :(得分:6)
Clojure可以使用(Java)CLASSPATH
环境变量的内容,所以如果在运行Clojure之前将jar添加到全局类路径中,你将“看到”它:
export CLASSPATH=/path/to/jfreechart.jar:$CLASSPATH
但是,在我看来,这不是向Clojure的类路径添加jar的“干净”方式(因为这使得库对任何 Java程序可见,并且可能不需要)。相反,您应该使用CLOJURE_EXT
环境变量。这就是记录这个变量的方法:
# CLOJURE_EXT The path to a directory containing (either directly or as
# symbolic links) jar files and/or directories whose paths
# should be in Clojure's classpath. The value of the
# CLASSPATH environment variable for Clojure will be a list
# of these paths followed by the previous value of CLASSPATH
# (if any).
在我的系统上,它的定义如下:
export CLOJURE_EXT=~/.clojure
因此,要将jfreechart.jar(或任何其他库)添加到Clojures的类路径中,请将其复制(或添加指向它的符号链接)在CLOJURE_EXT
变量中定义的目录中。
顺便说一句(对不起,但你的问题不是那么清楚),如果你想将一些Java类捆绑到一个jar中,那么命令是这样的:
$ jar cf myjarfile *.class
您将找到jar
的文档 - Java存档工具 - here。
答案 1 :(得分:2)
我完全尊重你不使用项目管理工具的愿望,尽管我花了更长的时间来输入这句话而不是设置leiningen。对于你的一次性脚本,任何工具都会过度杀伤,Pascal Thivent的答案非常清楚。对于阅读这个问题的人来说,他们可能想要制作一个jar文件,或者很容易将他们的Clojure加载到emacs / slime-swank中,我不能太强烈地推荐leiningen。
答案 2 :(得分:1)
如果你打算使用基础知识,你可以内联你的类路径以包含你的罐子的硬编码位置,所以如果你在Windows上它看起来像
java -cp .;%CLASSPATH%;C:/here/it/is/foo.jar com.foo.MyClass
答案 3 :(得分:0)
不确定如何运行clojure,但是你不是只是将jar文件添加到类路径中吗?
即
/usr/share/java:/home/user/myjarfile.jar