Вопрос по ant, environment-variables, java – JAVA_HOME не указывает на JDK

29

Я пытаюсь следовать руководству о том, как использовать ant для создания и запуска вашего приложения. Я выполнил все шаги и создал файл сборки, но при попытке запустить ant выдает эту ошибку.

BUILD FAILED /home/bilal/tmp/ant/build.xml:19: Unable to find a javac compiler; com.sun.tools.javac.Main is not on the classpath. Perhaps JAVA_HOME does not point to the JDK. It is currently set to "/usr/lib/jvm/java-6-openjdk/jre"

Есть идеи, как решить эту проблему?

Ваш Ответ

16   ответов
1

Я просто скопировал файл tools.jar из папки JDK \ lib в папку JRE \ lib. С тех пор это работало как чемпион.

@ mjp66, ты пробовал. Он не дал ответа на вопрос? Как так? Мы не нуждаемся в разъяснениях не только автора, которого, по моему мнению, могут разъяснить те, кто сталкивался с проблемой. И какова достаточная репутация ???
Это не дает ответа на вопрос. Чтобы критиковать или запросить разъяснения у автора, оставьте комментарий под его постом - вы всегда можете прокомментировать свои собственные посты, и как только у вас будет достаточноreputation Вы сможетеcomment on any post. - From Review
Это лучший ответ! Это работало и не требовало команд, которые я понятия не имел, где я должен написать
0

Под Дженкинсом это жалуется как:

/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/ не похож на каталог JDK

Причина: не удалось найти комплект разработчика для JDK.

Решение:

Пожалуйста, не забудьте установитьopenjdk-devel пакет, а также вашу версию JDK-1.8 * и реэкспорт с помощью: # source ~ / .bash_profile

13

Это по замыслу. Вы не можете использовать муравьиjava.home (который являетсяjava.lang.System свойство) взаимозаменяемо с тем, какJAVA_HOME устанавливается в среде ОС. Вы, вероятно, пытаетесь установить местоположение компилятора Java с принципиально отличным значением от другого уровня свойств - то есть java.home (из внутренних компонентов Ant) указывает на среду выполнения Java в<any_installed_java_pointed_to_by_ant>/jre в то время как JDK_HOME (из среды ОС) обычно устанавливается на<DOWNLOADED_AND_INSTALLED_JAVA_DEVELOPMENT_KIT>.

Смотрите мой вопрос и ответ здесь для более подробной информации:Где Ant устанавливает свой «java.home» (и это неправильно) и должен ли он добавлять '/ jre'?

Решение состоит в том, чтобы получить доступ к свойству системной среды в Ant с помощью${env.JAVA_HOME}, Укажите, какой Java следует явно использовать в задаче Javac, установивexecutable свойство пути Javac и томуfork свойство да (см.Документация по заданию Ant для Javac). Таким образом, не имеет значения, в какой среде Java работает Ant, компилятор всегда четко указан!

docs.oracle.com/javase/tutorial/essential/environment/… - & quot; Каталог установки для Java Runtime Environment (JRE). & quot; Обратите внимание, что здесь не написано Java Development Kit. Он обнаружен системой на основе виртуальной машины, в которой выполняется приложение.
@Dave Rager: Муравей работаетas designed.
Я не использую java.home. И это говорит мне, что мой JAVA_HOME неверен, и дает мне его java.home в качестве значения для него. Это кажется мне довольно сломанным
Я бы не сказал, что это решение. Это объясняет, что происходит, а не как это исправить. У меня та же проблема, что и у Ant, а не у меня, которая, похоже, взаимозаменяемо использует java.home и JAVA_HOME. Мой JAVA_HOME правильный, но Ant, кажется, добавляет / jre, а потом жалуется на это!
это должно быть помечено как решение
1

JAVA_HOME у вас выше только указывает на JRE, который не содержит компилятор. Установите свой JAVA_HOME на

/usr/lib/jvm/java-6-openjdk

...и попробуй еще раз.

Другие люди уже дали этот ответ, вы просто повторяете другим.
0

Выполнение:

$ export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-3.b16.el6_9.x86_64

и установите среду операционной системы:

vi /etc/environment

Затем выполните следующие действия:

  1. Press i
  2. Paste

    JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-3.b16.el6_9.x86_64
    
  3. Press esc

  4. Press :wq
1

Я встретил эту проблему в rhel, мой & quot; JAVA_HOME = / usr / lib / jvm / java-1.8.0-openjdk & quot; (который является символической ссылкой), и муравей жалуется.

МОЕ решение для этого - использовать реальный путь jdk в JAVA_HOME, например:

JAVA_HOME = / USR / Библиотека / JVM / Java-1.8.0-OpenJDK-1.8.0.161-0.b14.el7_4.x86_64

Меня устраивает.

3

Похоже, что вы в данный момент указываете на JAVA_HOME/usr/lib/jvm/java-6-openjdk/jre который представляется JRE, а не JDK. Попробуйте установить JAVA_HOME в/usr/lib/jvm/java-6-openjdk.

JRE не содержит компилятор Java, его содержит только JDK (Java Developer Kit).

27

ДелатьJAVA_HOME переменная точка кjdk установка, а неjre.

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

Из строки, которую вы разместили, в которой говорится, что у вас есть open-jdk, вы можете просто удалить jre в конце:

export JAVA_HOME='/usr/lib/jvm/java-6-openjdk/'
Этот ответ не дает решения, почему оно принимается и голосуется?
@NimChimpsky Я только что решил проблему в Ubuntu12.04, основываясь на ответе здесь. Changin JAVA_HOME не решает проблему, потому что ant не будет использовать это значение, и alawys покажет, что он указывает на подпапку jre
в сообщении об ошибке уже сказано, что текущим путем является / usr / lib / jvm / java-6-openjdk / jre & quot ;. просто удалите & quot; jre & quot; в конце.
Это было помечено как решение, но оно не обеспечивает решение.
после того, как я сделаю этот экспорт, JAVA_HOME = / usr / lib / jvm / java-6-openjdk / все равно выдаст ту же ошибку, заявив, что в настоящее время он установлен на / usr / lib / jvm / java-6-openjdk / jre & quot ; comatose
0

Как только вы обновите путь JAVA_HOME, как указано в ответе, вы должны сделать это:

$source ~/.bashrc

Это обновит bashrc и покажет обновленный путь в $ JAVA_HOME при повторной проверке.

24

Вы установилиjava...

apt-get install default-jre

Но неJDK...

apt-get install default-jdk
@ingyhere Установкаdefault-jdk как предложено здесь решило проблему для меня.
@Mark Stosberg Во-первых, я удалил свой предыдущий комментарий, поскольку он должен был дополнить комментарии другим ответом. Для потомков также контекст не ясен на этой странице. Таким образом, идея заключается в том, что Ant должен работать внутри JRE, независимо от этого. Однако для компиляции приложения требуется JDK. Задача Ant Javac должна (или, по крайней мере, раньше) по умолчанию находить компилятор Java (javac), анализируя внутренние свойства. Так что, если Javac & quot; исполняемый файл & quot; атрибут не указан явно, он может найти неправильную вещь. Наличие JDK является обязательным условием, и да, конечно, отсутствие его является проблемой.
0

Эта проблема возникла при попытке запустить эмулятор андроида с Meteor 1.0 на простейшей ОС Luna (на основе источников Ubuntu 12.04 LTS).

Был установлен openjdk-6-jdk, а также jre. В итоге, не ожидая какого-либо успеха, я попытался:

sudo apt-get remove openjdk-6-*

это привело к полностью ожидаемым ошибкам, поэтому я

sudo apt-get install openjdk-6-jdk

и все заработало. Пойди разберись.

2

Я использую Windows 7 и боролся с той же проблемой. Я исправил это, изменив мои переменные среды.

Чтобы изменить переменные средыкликните сюда

Я добавил & quot ;;% JAVA_HOME% / bin & quot; в переменную конца пути и добавлен новый & quot; JAVA_HOME & quot; переменной и установите ее значение в расположение моего JDK & quot; C: \ Program Files \ Java \ jdk1.8.0_11 & quot ;. После этого я перезапустил командную строку Node.js, и она заработала.

Обратите внимание, что каталог JDK может отличаться от моего. Кроме того, в зависимости от настроек может потребоваться перезагрузить компьютер после установки переменных среды.

0

для centos yum -y установить java-1.7.0-openjdk-devel.x86_64

и обновите JAVA_HOME = / usr / lib / jvm / java-1.7.0-openjdk.x86-64

Попробуйте отформатировать свою команду, чтобы ее было легче читать.
0

На Ubuntu 14.04 я нашел две части для решения проблемы:

  1. Remove /jre from the environment variable. For me: export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/
  2. Install the JDK as well as the JRE: sudo apt-get install default-jdk
4

Я знаю, что этот вопрос старый, но принятый ответ больше не работает, и поскольку это первая ссылка в поиске Google, я расскажу, как я решил эту проблему.

для затмения с использованием Ubuntu:

перейдите в Window-> Preferences-> Ant-> Runtime- & gt; выберите Ant_Home_Entries и нажмите на добавление внешних jar-файлов, затем найдите в проводнике файлов, где находятся ваши jd, k (по умолчанию это / usr / lib / jvm /) и в папке lib вашего jdk вы найдете tool.jar. выберите этот и нажмите применить.

попробуйте построить свой проект, и все должно работать!

примечание: я давно не использовал ant, но он мне нужен был для генератора рабочей нагрузки ycsb couchbase (http://www.couchbase.com/wiki/display/couchbase/Load+Generator+Setup) если кто-то застрял на этом.

1

У меня была похожая проблема, и оказалось, что проблема была в обеих версиях 6 & amp; 7 из OpenJDK. Ответ приходит от r-Senior на форумах Ubuntu (http://ubuntuforums.org/showthread.php?t=1977619) --- просто удалите версию 6:

sudo apt-get remove openjdk-6-*

убедитесь, что JAVA_HOME и CLASSPATH не установлены ни на что, поскольку это на самом деле не является проблемой.

Похожие вопросы