我正在尝试从我的 eclipse 创建一个 jar,为了能够使用外部 .jars,我在类路径中使用这个 list 和多个 .jars:
Manifest-Version: 1.0
Sealed: true
Main-Class: src.BatchTester
Class-Path: . P:/Tools/xstream/1.4.2/lib/kxml2-2.3.0.jar P:/Tools/xstream/1.4.2/lib/xstream-1.4.2.jar P:/Tools/StringTemplate/4.0.5/lib/antlr-3.3-complete.jar P:/Tools/StringTemplate/4.0.5/lib/ST-4.0.5.jar P:/Tools/Jdbc/lib/sqljdbc4.jar
显然,如果我不将库放在类路径中,则会出现以下错误:
java.lang.NoClassDefFoundError: com/thoughtworks/xstream/XStream
但是当我将它们放入类路径时,错误变为:
java.lang.NoClassDefFoundError: src/BatchTester
所以它似乎找不到我的主类。我已经在类路径中尝试了几种可能性,例如添加或删除 .
到类路径,但无法使其工作。
知道如何解决这个问题吗???
感谢您的时间和努力,
PS:创建 .jar 后, list 中的类路径如下所示:
Class-Path: . P:/Tools/xstream/1.4.2/lib/kxml2-2.3.0.jar P:/Tools/xstr
eam/1.4.2/lib/xstream-1.4.2.jar P:/Tools/StringTemplate/4.0.5/lib/ant
lr-3.3-complete.jar P:/Tools/StringTemplate/4.0.5/lib/ST-4.0.5.jar P:
/Tools/Jdbc/lib/sqljdbc4.jar
使用新行和空格,但即使将其更改为“正确”格式后,我也遇到了同样的问题。
PS2:我知道使用像 Fat-Jar 这样的插件可以让它工作,但我不想在我的 .jar 中插入比需要更多的数据
最佳答案
最后,我将所有库复制到/lib 文件夹中,并使用 ant 目标将它们添加到 .jar 中,因为 IT 人员似乎没问题(因为它是一个小应用程序)。
这是 Ant (万一对某人有用):
<?xml version="1.0" encoding="UTF-8"?>
<project name="BatchTester" default="compile" basedir=".">
<property name="external" value="lib/external-libs.jar"/>
<target name="compile">
<javac srcdir="jav"
source="1.6"
/>
<echo>Creating jar File</echo>
<!--create a new .jar with all the external jars in /lib-->
<jar jarfile="${external}">
<zipgroupfileset dir="lib/">
<include name="**/*.jar"/>
</zipgroupfileset>
</jar>
<!--<sleep seconds="1"/>-->
<!--create .jar file-->
<jar jarfile="BatchTester.jar" index="true" filesetmanifest="mergewithoutmain">
<fileset dir=".">
<include name="**/jav/**/*.class"/>
<exclude name="**/jav/**/*.java"/>
</fileset>
<zipfileset src="${external}">
<exclude name="META-INF/*.SF"/>
</zipfileset>
<manifest>
<attribute name="Main-Class" value="jav.BatchTester"/>
</manifest>
</jar>
<!--delete previously created extern .jar-->
<delete file="${external}"/>
</target>
</project>
关于java - 在类路径中使用具有多个库的自定义 list 创建 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10929438/