Я новичок в файлах сборки Ant, и Мне удалось настроить мой файл сборки, чтобы создать структуру каталогов сборки, скомпилировать все мои файлы и поместить их в банку с манифестом, правильно определяющим основной класс.
Однако я также пытаюсь добавить в файл сборки возможность запускать только что созданный файл jar. Он попытается запустить, но я обнаружил эту ошибку:
run:
[java] Exception in thread "main" java.lang.NoClassDefFoundError: edu/course/lab/pkg3/Lab31
[java] at edu.school.oad.lab.pkg1.Main.<init>(Unknown Source)
[java] at edu.school.oad.lab.pkg1.Main.main(Unknown Source)
[java] Caused by: java.lang.ClassNotFoundException: edu.course.antlab.pkg3.Lab31
[java] at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
[java] at java.security.AccessController.doPrivileged(Native Method)
[java] at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
[java] at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
[java] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
[java] at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
[java] ... 2 more
[java] Java Result: 1
Итак, я знаю, что это означает, что когда я пытаюсь запустить файл jar, файл jar структурирован правильно и манифест настроен правильно, но он не может найти класс Lab31, потому что он не включен в этот конкретный файл jar. Вместо этого он содержится в другом файле jar, расположенном в папке моей библиотеки, ./lib/. Я попытался использовать тот же метод, чтобы установить путь к классам для запуска файла jar так же, как я установил путь к классам для фактической компиляции, но, похоже, это не работает.
Вот что у меня есть для части выполнения файла сборки:
<target name="run" depends="init, prepare">
<java jar="${build}/jar/AntLabRun.jar" fork="true">
<classpath>
<pathelement location="${lib}/resources.jar" />
</classpath>
</java>
</target>
Я думал только о том, что файл jar думает, что файл resources.jar находится в $ {build} / jar / $ {lib} / resources .jar, а не просто $ {lib} /resources.jar, но если это так, я все еще не уверен, как это исправить. Может ли кто-нибудь дать совет?