我正在尝试从eclipse中的Java项目创建一个可执行文件。我知道第一步是创建一个JAR文件,因此在搜索站点后,我能够编译以下Ant build.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- Configuration of the Ant build system to generate a Jar file -->
<project name="GraphBuild" default="CreateJar">
<target name="CreateJar" description="Create Jar file">
<manifest file="MANIFEST.MF">
<attribute name="Main-Class" value="GraphEditor" />
</manifest>
<jar jarfile="GraphEditor.jar" basedir="." includes="*.class"
manifest="MANIFEST.MF" />
</target>
</project>
当我使用以下命令
运行GraphEditor.jar时java -jar GraphEditor.jar
我收到java.lang.NoClassDefFoundError
,因为我在我的项目中有一些参考库,似乎加载器无法找到它们。我试着设置-cp变量,但没有成功。
谢谢你的帮助。
使用maven,您可以轻松地创建包含所有依赖项的可执行jar。也许你想用maven代替ant。如何使用Maven创建具有依赖关系的可执行JAR ?
您需要适当地附加依赖jar并正确指向class
文件的目录。
类似:
<jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${class.dir}">
<manifest>
<attribute name="Main-Class" value="${main-class}"/>
<attribute name="Class-Path" value="${lib.dir}/lib1.jar ${lib.dir}/lib2.jar"/>
</manifest>
</jar>
您可以将class - path变量与具有适当位置的依赖jar文件一起添加并尝试吗?
如果我正确地阅读了您的问题,我首先想说您不能使用-cp和-jar。例如,如果你在创建jar(在ant @see http://www.tomred.net/tomred-java-jar-meta-inf-manifest.html)时声明了一个类路径,以便它在MANIFEST中,那么你不需要包含-cp。
如果你想用一个类路径测试你的jar,你应该这样做,但是把-jar换成-cp,如下所示。
java -cp lib/;deps/;GraphEditor.jar org.package.to.RunClass
简单的-jar和-cp是乘法互斥的。注意:";"分隔在windows ":"在linux