Я создал исполняемый файл jar, используя build.Невозможно выполнить файл jar. Получение NoClassDefFoundError
<target name="deploy" depends="compile">
<jar jarfile="${deploy.home}/${app.name}.jar" basedir="${build.home}">
<manifest>
<attribute name="Main-Class" value="abc.xyz"/>
</manifest>
</jar>
Здесь вызов хуг имеет основной метод для выполнения всей программы ..
public static void main(String[] args) {
File buildFile = new File("build.xml");
Project p = new Project();
p.setUserProperty("ant.file", buildFile.getAbsolutePath());
p.init();
ProjectHelper helper = ProjectHelper.getProjectHelper();
p.addReference("ant.projectHelper", helper);
helper.parse(p, buildFile);
p.executeTarget(p.getDefaultTarget());
}
Сосуд файл создается успешно. Когда я исполняю как java -jar appname.jar
, он бросает исключение -
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/tools/ant/Project
at abc.xyz.main(xyz.java:20)
Caused by: java.lang.ClassNotFoundException: org.apache.tools.ant.Project
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
Класс проекта не найден. Его там в ant.jar
.
Но когда я выполняю класс abc.java
, просто в командной строке java abc работает нормально.
Приятно помочь мне получить причину? и его решение.
не могли бы вы объяснить? Но когда я выполняю класс xyz.java, просто в командной строке java abc.java работает нормально, у вас есть два класса? один призвал друг друга? вы можете опубликовать весь код двух классов (исключая неинтересные части). Мне нужно проверить ваше объявление пакета. – Gianmarco
. Вам нужно добавить необходимые библиотеки в класс-путь, объявленный в манифесте вашего приложения. Если ваше приложение нуждается в ant.jar, вы должны сказать об этом Java. – Holger
Спасибо, Gianmarco, Это была ошибка типографии, я отредактировал ее, только один основной класс. Нет проблемы с пакетом. его рабочий тон на затмении. – smriti