Что не так с моей конфигурацией муравья? - PullRequest
30 голосов
/ 25 февраля 2010

Я установил Ant на машину Fedora 5, используя yum, но Ant не запускается. Я получаю это сообщение об ошибке:

[bash]# ant
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/tools/ant/launch/Launcher
Caused by: java.lang.ClassNotFoundException: org.apache.tools.ant.launch.Launcher
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: org.apache.tools.ant.launch.Launcher.  Program will exit.

Я установил следующие переменные окружения:

JAVA_HOME = /usr/java/latest
ANT_HOME = /usr/bin

Ant установлен на /usr/bin/ant.

Я также сталкивался с этим постом , и кажется, что переменная JAVAVER_LIBDIR не указывает на то, что существует. Я установил символическую ссылку, подобно тому, как пост предлагает устранить проблему для автора, но это не помогло мне.

[bash]# sudo ln -s /usr/share/java /usr/share/java-1.6.0

Редактировать: Я также установил символическую ссылку, которая решает аналогичную проблему с переменной JAVAVER_JNIDIR:

[bash]# sudo ln -s /usr/lib/java /usr/lib/java-1.6.0

Теперь я получаю другое сообщение об ошибке:

[bash]# ant --execdebug
/usr/bin/build-classpath: error: Could not find jaxp_parser_impl Java extension for this JVM
/usr/bin/build-classpath: error: Could not find xml-commons-apis Java extension for this JVM
/usr/bin/build-classpath: error: Some specified jars were not found
exec "/usr/java/latest/bin/java" -classpath "/usr/share/java-1.6.0/ant.jar:/usr/share/java-1.6.0/ant-launcher.jar:/usr/java/latest/lib/tools.jar" -Dant.home="/usr" -Dant.library.dir="/usr/lib" org.apache.tools.ant.launch.Launcher -cp ""
Buildfile: build.xml does not exist!
Build failed

Отослать в Google эти сообщения об ошибках ...

Ответы [ 11 ]

26 голосов
/ 17 марта 2013

Я только что столкнулся с подобной проблемой в Fedora 18.

Короче говоря, запустите:

sudo mkdir /usr/lib/java-1.7.0 /usr/share/java-1.7.0

По-видимому, эта проблема относится только к java-1.7.0-openjdk, поскольку существуют подобные пустые каталоги для всех других версий JDK.


информация

Произошла ошибка в одну строку после запуска ant:

Error: Could not find or load main class org.apache.tools.ant.launch.Launcher

Проблема была где-то в /usr/share/java-utils/java-functions скрипте, который пытался установить JAVAVER_JNIDIR / JAVAVER_LIBDIR переменные для ссылки на каталоги выше. Из-за неправильного перенаправления сообщения об ошибке в stdout, некоторые переменные получили назначения, такие как:

LOCALCLASSPATH='/usr/bin/build-classpath: error: JAVAVER_JNIDIR /usr/lib/java-1.7.0 does not exist or is not a directory'

Самым чистым решением является создание каталогов в соответствии с соглашением, установленным всеми другими версиями Java.

13 голосов
/ 01 апреля 2013
sudo mkdir /usr/lib/java-1.7.0 /usr/share/java-1.7.0

Я установил Sun Java 1.7.x, загрузив файл tar и поместив его в / opt. Поскольку я не делал ням установки, эти каталоги не были созданы. Мой JAVA_HOME установлен на:

$ echo $JAVA_HOME/
/opt/jdk1.7.0_03/

Как сказал кто-то еще, запуск следующего обеспечил очень полезную отладку:

ant --execdebug
11 голосов
/ 25 февраля 2010

Я думаю, что ANT_HOME должен быть установлен с '/ usr / bin / ant'. У меня есть эта конфигурация (CENTOS 5).

Мой сценарий sh в каталоге /etc/profile.d имеет такой конф.

export JAVA_HOME="/usr/local/java";
export ANT_HOME="/usr/local/ant";

Надеюсь, это поможет вам.

6 голосов
/ 12 апреля 2011

У меня была похожая проблема, но следующие исправили ее для меня:

sudo yum install xml-commons-apis
4 голосов
/ 14 декабря 2015

У меня было то же самое сообщение об ошибке сегодня, но вызванное другой причиной.

В моем случае после обновления до OpenJDK 1.8.0 я больше не мог запускать ant.

Проблема заключалась в том, что вывод команды java -fullversion изменился незначительно, и /usr/share/java-utils/java-functions больше не правильно его понимал.

Обновление до последней версии jpackage-utils RPM решило это для меня.

3 голосов
/ 02 февраля 2013

У меня была такая проблема на Fedora 16, но в моем случае xerces пакетов и xml-commons-apis были в порядке. На самом деле, --execdebug очень полезен, и он напечатал, что ant не может найти каталог в /usr/lib/jvm-exports/YOUR_JDK. Это потому, что я переключился с openjdk на jdk оракула и там остался каталог предыдущей версии jdk (/usr/lib/jvm-exports/java-1.6.0-openjdk-1.6.0.0), но моей текущей версии (/usr/lib/jvm-exports/jdk1.6.0_32) не было. Эти каталоги содержат только несколько программных ссылок, которые указывают на jar-файлы конкретного jre, поэтому я предпринял следующие шаги:

  1. создать новый каталог для текущей версии jdk (jdk1.6.0_32)
  2. скопировать все ссылки из каталога openjdk в новый каталог
    # cp -av java-1.6.0-openjdk-1.6.0.0.x86_64/* jdk1.6.0_32/
  3. исправьте их все так, чтобы они указывали на банки оракула, например:
    # cd /usr/lib/jvm-exports/jdk1.6.0_32<br/># ln -s -f $JAVA_HOME/jre/lib/rt.jar jaas-1.6.0.0.jar

Очевидно, $JAVA_HOME установлено правильно (в новой версии jdk). Это решило мою проблему и может быть другой причиной, исключая причины, упомянутые выше.

2 голосов
/ 10 апреля 2015

В моем случае я устанавливал переменную ANT_HOME, но для использования в системном пути был добавлен /bin/ - эта домашняя переменная не должна быть двоичным каталогом, используйте следующее для установки ant hime и добавления двоичный каталог к ​​пути env.

export ANT_HOME=/opt/apache-ant-1.9.4
export PATH=$ANT_HOME/bin:$PATH
2 голосов
/ 31 января 2011

Попробуйте установить xerces-j2-xml-apis

1 голос
/ 06 ноября 2015

У меня было точно такое же сообщение об ошибке в OS X, но кто-то предложил сбросить ANT_HOME, и это сработало.https://github.com/Homebrew/homebrew/issues/32851

1 голос
/ 15 февраля 2012

У меня была такая же проблема на Suse, SLES 11. Ответ Хидаифа https://stackoverflow.com/a/4849302/1211900 решил ее Предполагая готовые репозитории пакетов: me @ sles: ~> sudo zypper install xerces-j2-xml-apis

...