我正在尝试在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变量没有运气。
感谢您的帮助。
答案 0 :(得分:1)
使用maven,您可以轻松创建包含所有依赖项的可执行jar。 也许你想用maven代替蚂蚁。 How can I create an executable JAR with dependencies using Maven?
答案 1 :(得分:0)
您需要正确附加相关的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>
答案 2 :(得分:0)
您可以使用具有适当位置的相关jar文件添加Class-Path变量并尝试?
答案 3 :(得分:0)
如果我正确地阅读了您的问题,我首先要说您不能使用-cp和-jar。如果你在创建jar时声明了一个类路径(例如在ant @see http://www.tomred.net/tomred-java-jar-meta-inf-manifest.html中),以便它在MANIFEST中,那么你不需要包含-cp。
如果你想用类路径测试你的jar你应该按照你的方式进行测试,但是交换-jar for -cp如下所示。
java -cp lib/;deps/;GraphEditor.jar org.package.to.RunClass
简单-jar和-cp是多重排他性的。注意: ”;”在Linux中分离“:”在Linux中