Подтвердить что ты не робот

Что не так с моей конфигурацией ant?

Я установил 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 эти сообщения об ошибках...

4b9b3361

Ответ 1

Я только что встретил подобную проблему на 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 script, которая пыталась установить переменные 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, является самым чистым решением.

Ответ 2

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

Я установил sun java 1.7.x, загрузив tar файл и поместив его в /opt. Поскольку я не выполнял установку yum, эти каталоги не создавались. Для моего JAVA_HOME установлено значение:

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

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

ant --execdebug

Ответ 3

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

Мой sh script в разделе '/etc/profile.d' имеет этот conf.:

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

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

Ответ 4

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

sudo yum install xml-commons-apis

Ответ 5

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

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

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

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

Ответ 6

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

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

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

Ответ 7

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

Ответ 8

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

export ANT_HOME=/opt/apache-ant-1.9.4
export PATH=$ANT_HOME/bin:$PATH

Ответ 9

У меня была та же проблема на Suse, SLES 11. Ответ Hidayath fooobar.com/questions/172649/... решил. Предполагая, что готовые репозитории пакетов:   me @sles: ~ > sudo zypper install xerces-j2-xml-apis

Ответ 11

В моей папке "lib", в которой есть все банки, включая

ant-launcher.jar

находилось под

/usr/local/Cellar/ant/1.9.6/libexec/ 

Я скопировал папку lib в

/usr/local/Cellar/ant/1.9.6/

потому что после запуска 'ant --execdebug', я нашел, что команды ant ищут папку "lib" в папке "1.9.6".

после этого изменения команды ant начали нормально работать.