У меня есть Java-приложение, которое я хочу упаковать в .jar-файл со всеми его зависимостями, используя файлы сборки ant.
Для этого я использую инструмент One-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
Я пытался заставить его работать с этим примером с сайта jar.
Вот моя цель 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>