Java项目构建jar和依赖项

时间:2013-06-09 17:40:46

标签: java ant

我正在尝试在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变量没有运气。

感谢您的帮助。

4 个答案:

答案 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中