如何在.jar文件中包含java内容?
好的。所以我的问题是:我正在用Clojure做一个数据解析器。我的程序的一部分是它必须能够绘制数据。我想,我会使用jFreeChart。然而,我完全不知道如何在JAR文件中包含内容。我的意思是:如果我的类路径中有app.jar文件,我似乎无法执行以下操作: 导入app.thing.thing2 不改变jar文件中的类路径 这里的想法是,我不认为我可以更改我的类路径,因为我需要将它设置为运行Clojure(或者我可以吗?)。全局类路径当前为/usr/share/java 请不要要求我使用Maven、Ant或任何项目构建工具,除非这是唯一的方法。这是一个供个人使用的脚本,不需要或不需要太多开销 我想知道我是否应该解压每个JAR文件,这样我就可以引用目录结构了?这不好吗如何在.jar文件中包含java内容?,java,clojure,Java,Clojure,好的。所以我的问题是:我正在用Clojure做一个数据解析器。我的程序的一部分是它必须能够绘制数据。我想,我会使用jFreeChart。然而,我完全不知道如何在JAR文件中包含内容。我的意思是:如果我的类路径中有app.jar文件,我似乎无法执行以下操作: 导入app.thing.thing2 不改变jar文件中的类路径 这里的想法是,我不认为我可以更改我的类路径,因为我需要将它设置为运行Clojure(或者我可以吗?)。全局类路径当前为/usr/share/java 请不要要求我使用Maven
如果您需要任何澄清,请告诉我 不确定clojure是如何运行的,但您不只是将jar文件添加到类路径中吗 i、 e
如果你要学习基础知识,你可以内联你的类路径来包含你的JAR的硬编码位置,所以如果你在windows上,它看起来像
java-cp;%类路径%;C:/here/it/is/foo.jar com.foo.MyClass
Clojure可以使用(Java)CLASSPATH
环境变量的内容,因此如果在运行Clojure之前将jar添加到全局类路径,您将“看到”它:
但是,在我看来,这并不是向Clojure的类路径添加jar的“干净”方式(因为这使库对任何Java程序可见,并且可能不需要)。相反,您应该使用CLOJURE\u 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
您可以找到Java归档工具jar的文档。我完全尊重您不使用项目管理工具的愿望,尽管我只是花了比设置leiningen更长的时间来输入这句话。对于你的一次性脚本来说,任何工具都是多余的,Pascal Thivent的答案很好地说明了这一点。对于阅读这个问题的人来说,他们可能想要生成一个jar文件,或者轻松地将Clojure加载到emacs/slime swank中,我对leiningen的推荐力度太大了 JAR文件是否可用于编译/运行Java代码?也许问题在于JAR本身,因为它不打算直接添加到类路径中(这在我看来是个错误)。如果你让我们知道你用来运行或编译代码的命令/工具,我们可能会更有帮助。除了这个问题是关于Clojure的,如果我没有错,那么这对OP没有帮助。这个答案正是我想要的。我有时确实难以提出明确的问题。谢谢!
export CLOJURE_EXT=~/.clojure
$ jar cf myjarfile *.class