Файл сборки Ant не может поместить файл jar в путь к классам при запуске другого файла jar

Я новичок в файлах сборки 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, но если это так, я все еще не уверен, как это исправить. Может ли кто-нибудь дать совет?

6
задан wibarr 27 February 2011 в 23:54
поделиться