Java项目构建jar和依赖项



我正在尝试从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

相关内容

  • 没有找到相关文章

最新更新