2010-01-23 65 views
2

好的。所以这是我的问题:我正在Clojure中制作一个数据解析器。我的程序的一部分是它必须能够绘制数据图。我想,我会用jFreeChart。不过,我绝对没有IDEA如何将东西包含在JAR文件中。我的意思是:如果我在我的类路径中app.jar文件,我似乎并没有能够做到:如何将java文件包含在.jar文件中?

进口app.thing.thing2

不改变classpath中是内部的jar文件。

这里的想法是,我不认为我可以改变我的类路径,因为我需要设置它来运行Clojure(或者我?)。全局类路径目前是/ usr/share/java。

请不要问我使用Maven,Ant或任何项目构建工具,除非它是唯一的方法来做到这一点。这是一个供个人使用的脚本,它不需要或不需要很多开销。

不知我是否应该解压每个JAR文件,以便我可以引用目录结构?这不好吗?

让我知道你是否需要任何澄清!

+0

JAR文件是否适用于编译/运行Java代码?也许问题在于JAR本身,因为它并不打算直接添加到类路径中(这可能是IMO的错误)。如果你让我们知道你用来运行或编译代码的命令/工具,我们可能会更有帮助。 – Grundlefleck 2010-01-23 01:34:00

回答

5

(Java)CLASSPATH环境变量的内容可用于Clojure,因此如果您在运行Clojure之前将您的jar添加到全局类路径中,您将会“看到”它:

export CLASSPATH=/path/to/jfreechart.jar:$CLASSPATH 

但是,在我看来,这是不是“干净”的方式来增加广口瓶中,Clojure的类路径(因为这使得以任何 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 cf myjarfile *.class 

你”将找到jar的文档 - Java归档工具 - here

+0

这个答案正是我一直在寻找的。 我确实有时无法制定明确的问题。非常感谢! – Luke 2010-01-23 04:43:31

0

不知道clojure是如何运行的,但是不要将jar文件添加到类路径中?

/usr/share/java:/home/user/myjarfile.jar 
1

如果你要基本可以内嵌类路径,包括您的罐子的硬编码的位置,所以如果你在Windows上它看起来像

java -cp .;%CLASSPATH%;C:/here/it/is/foo.jar com.foo.MyClass

+0

除非问题是关于Clojure,如果我没有错,所以这对OP没有帮助。 – 2010-01-23 02:07:22

+0

是的 - 我正在阅读帕斯卡尔的回答,我认为他钉了它 – Bostone 2010-01-23 02:36:29

2

我完全尊重你的愿望,不要使用项目管理工具,尽管我只是花了更长的时间输入这个句子,而不是设置leiningen。对于你的一次性脚本来说,任何工具都会变得过分,Pascal Thivent的回答很好。对于阅读这个问题的人来说,他们可能想要生成一个jar文件,或者轻松地将他们的Clojure加载到emacs/slime-swank中,我不能太强烈地推荐leiningen。

相关问题