我有一个Java应用程序,我想使用ant构建文件将所有依赖项打包到一个.jar文件中。
为此,我正在使用“一罐”工具将所有东西打包在一起。不幸的是,由于.jar显示在最终.jar文件的正确文件夹中,所以我无法正确获取类路径,但是一旦我运行它,就无法找到这些类。 Java抛出:
Exception in thread "main" java.lang.reflect.InvocationTargetException
...
Caused by: java.lang.NoClassDefFoundError: class/from/external/library
...
Caused by: java.lang.ClassNotFoundException: class.from.external.library
我一直在尝试使其与One-jar网站中的this示例一起使用。 这是我的build.xml目标:
<target name="dist" depends="compile" >
<mkdir dir="${build}/lib/classes"/>
<unzip dest="${build}/lib/classes">
<fileset dir="lib">
<include name="*.jar"/>
</fileset>
</unzip>
<jar destfile="${build}/lib/lib.jar" >
<fileset dir="${build}/lib/classes"/>
</jar>
<one-jar destfile="${build}/release/my-tool.jar" basedir="${build}/bin">
<manifest>
<attribute name="One-Jar-Main-Class" value="my.main.Class"/>
<attribute name="Class-Path" value="./"/>
</manifest>
<main>
<fileset dir="${build}/bin"/>
</main>
<lib>
<fileset dir="${build}/lib">
<include name="*.jar"/>
</fileset>
</lib>
</one-jar>
<delete dir="${build}/lib/classes"/>
</target>