Почему ANT говорит мне, что JAVA_HOME ошибается, когда это не так?

Я получаю сообщение об ошибке:

C:\dev\ws\springapp\build.xml: 81: невозможно найти компилятор javac; com.sun.tools.javac.Main не находится в пути к классам. Возможно, JAVA_HOME не указывает на JDK. В настоящее время установлено значение "C:\Program Files\Java\jre6"

Но я четко установил, что мой JAVA_HOME является C:\Program Files\Java\jdk1.6.0_14

Где ANT получает это значение?

Ответ 1

Когда вы говорите, что у вас "четко установлен" JAVA_HOME на "C:\Program Files\Java\jdk1.6.0_14" - это то, что вы видите при запуске "set" из командной строки? Я полагаю, что Ant угадает значение JAVA_HOME, если оно не установлено вообще... возможно ли, что вы установили JAVAHOME вместо JAVA_HOME?

Если это не так, я предлагаю вам отредактировать пакетный файл ant.bat (и все, что он вызывает), я не могу вспомнить, запутался он или нет, чтобы распечатать JAVA_HOME в начале и в других интересных местах.

Ответ 2

  • В Eclipse нажмите Run → Внешние инструменты → Конфигурации внешних инструментов.
  • Перейдите на вкладку JRE.
  • Нажмите кнопку "Установленные JREs...".
  • Нажмите кнопку "Добавить".
    (Выберите стандартную виртуальную машину, если это применимо.)
  • Нажмите кнопку "Каталог".
  • Просмотрите версию JDK (не JRE) установленной Java
    (например, C:\Program Files\Java\jdk1.7.0_04).
  • Нажмите "Готово" и "ОК".
  • Выберите JDK в отдельной JRE и нажмите "Закрыть".
  • Запустите свой Ant script - получайте удовольствие!

Это работало в конкретном сценарии, с которым я столкнулся.

Ответ 3

Я столкнулся с той же проблемой, когда пытаюсь запустить Ant build, используя следующую команду:

java -cp ant.jar:ant-launcher.jar org.apache.tools.ant.Main

Вывод команды:

BUILD FAILED
XXX/build.xml:8: 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"

Кажется, что исполняемый файл java выбирает "/usr/lib/jvm/java-6-openjdk/jre" как JAVA_HOME, в отличие от "/usr/lib/jvm/java-6-openjdk", где установлен JDK.

Я решил эту проблему, установив fork="yes" в мою задачу <javac>.

Взгляните на: http://ant.apache.org/manual/Tasks/javac.html

Ответ 4

Также возможно, что вы включили /bin в настройку JAVA_HOME, а Ant добавляет /bin к нему, тем самым не обнаруживая exe. Это случилось со мной:}

Ответ 5

Убедитесь, что вы используете не, используя конечную точку с запятой: это не будет работать:

set JAVA_HOME=C:\Program Files (x86)\Java\jdk1.6.0_29;

Это будет:

set JAVA_HOME=C:\Program Files (x86)\Java\jdk1.6.0_29

Ответ 6

Я встретил подобную проблему. Я бы связался, чтобы запустить Ant задачу fron Maven build, и у меня возникла проблема. Я исправил его как шаги:

  • Убедитесь, что JAVA_HOME установлен правильно. Вы можете проверить это на Windowns в командной строке как: C: > echo% JAVA_HOME% Результат будет выглядеть так: C:\Progra ~ 1\Java\jdk1.6.0_30\
  • Скопируйте файл tools.jar из% JAVA_HOME%\lib в каталог lib из Maven.

И это сработало для меня.

Ответ 7

Чтобы решить эту проблему, добавьте файл tools.jar в window- > preferences → ant → runtime.

Ответ 8

В eclipse установите установленный параметр JRE в JDK - в проекте (свойства проекта → Java Build Path- > Libraries) или глобальные настройки по умолчанию (Java- > Installed JREs). Настройка eclispe сильнее системной.

Ответ 9

Надеюсь, вы знаете переменные среды System и User. Пользователь предпочитает систему. Если вы установили JAVA_HOME в системные переменные и если в пользовательских переменных есть запись, то вы получите только последнюю.

Щелкните правой кнопкой мыши Мой компьютер, перейдите в свойства, выберите вкладку "Дополнительно" и нажмите "Переменные среды", чтобы просмотреть список переменных пользовательской и системной среды.

Ответ 10

Точка с запятой отбрасывала меня: у меня было JAVA_HOME установлено значение "C:\jdk1.6.0_26;" вместо "C:\jdk1.6.0_26". Я удалил конечную точку с запятой после того, как я предложил предложение Jon Skeet изучить файл ant.bat. Это часть этого файла:

if "%JAVA_HOME%" == "" goto noJavaHome
if not exist "%JAVA_HOME%\bin\java.exe" goto noJavaHome

Таким образом, точка с запятой не была отделена от конца, в результате чего это не удалось найти файл, поэтому по умолчанию используется значение "C:\Java\jre6" или что-то в этом роде.

Сбивая с толку часть состоит в том, что страница HowtoBuild заявляет, что используется в виде двоеточия, но это, похоже, нарушает ее.

Ответ 11

Если у вас установлен JAVA_HOME, но там есть опечатка, вы также увидите фиктивную ссылку на путь jre6.

Ответ 12

Я столкнулся с одной и той же проблемой, сделав исполняемое свойство в теге javac для установки на место javac.exe разрешил проблему для меня. Это разрешило проблему

<javac srcdir="${srcDir}" destdir="${buildDir}" fork="true" executable="C:\Program Files\Java\jdk1.7.0_03\bin\javac"/>

Ответ 13

Фактически нашел этот ответ на superuser.com, но мне пришлось скопировать tools.jar из моего каталога JDK\lib в каталог JRE\lib.

Делает ZERO-смысл... единственное, что я могу придумать, - это Sun ввел эту ошибку в последней версии Java (обновление 7 для Java 7) или ошибку в Ant в том, как она считывает текущее местоположение JDK (JRE более обновленный, чем JDK, очевидно, который также глуп от Sun... они должны выпускать JDK каждый раз, когда они обновляют JRE).

Мой JAVA_HOME был установлен правильно. Я подтвердил, выполнив "set JAVA_HOME". Он указал на мой каталог JDK и был правильно написан. Тем не менее, Ant утверждал, что не может найти javac, но думал, что JAVA_HOME находится в моем каталоге JRE.

Моя система отлично работала до последних обновлений Sun JRE7 (10 и 11). Ant - версия 1.8.4

Ответ 14

Когда все остальное верно, попробуйте следующее

  • Перейти к окну → Настройки → Ant → Время выполнения → ClassPath
  • Развернуть глобальные записи и проверить доступные инструменты jdk.
  • Добавьте необходимые tools.jar из определенной версии java, такие как "C:\Program Files\Java\jdk1.6.0_45\lib\tools.jar"
  • Теперь создадим и проверим результаты.

Примечание. Добавьте tools.jar для компилятора java, который вы хотите использовать, и отдайте предпочтение ему, переместив его в список tools.jar, когда присутствует несколько tools.jar(java-компиляторов).

Ответ 15

Задайте JAVA_HOME в переменных среды как D:\Program Files\IBM\SDP\jdk Не указывайте кавычки или точки с запятой. Это работает для меня. Пожалуйста, попробуйте решение. Фактически в ant.bat он проверяет наличие соответствующего JAVA_HOME, если ant.bat не может его найти, тогда он JAVA_HOME указывает на JRE по умолчанию.

Ответ 16

У меня была та же проблема. В моем пакете JDK, указанном JAVA_HOME, не было никаких tools.jar Убедитесь, что у вашего JDK instal.lation есть tools.jar

(очевидно, ошибка сообщения запутывает)

Ответ 17

У меня тоже была проблема. Я использую Windows 7, и у меня установлены две версии java. Сначала я установил последнюю версию java 7, а затем версию 5.

Содержимое моего каталога установки java:

C:\Program Files\Java>
jdk1.5.0_14
jdk1.7.0_17
jre1.5.0_14
jre7

и мой JAVA_HOME был установлен в правильное значение, которое было:

C:\>set ja
JAVA_HOME=C:\Program Files\Java\jdk1.5.0_14

Но все же у меня была та же проблема:

XXXXXXX\build.xml:478: The following error occurred while
executing this line:
XXXXXXX\build.xml:477: 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 "C:\Program Files\Java\jre7"

После опроса всех предложений в этом потоке я осознал свою ошибку. Я пытался установить переменную окружения в "Пользовательские переменные" вместо раздела "Системные переменные". После установки его в "Системные переменные" он работал нормально. Однако я столкнулся с другой проблемой.

Стандартная версия java, на которую указывает, по-прежнему равна 7.

C:\>java -version
java version "1.7.0_17"
Java(TM) SE Runtime Environment (build 1.7.0_17-b02)
Java HotSpot(TM) Client VM (build 23.7-b01, mixed mode, sharing)

Я не уверен, как указать на версию 5.

Ответ 18

Я столкнулся с этой проблемой при создании моего проекта с Дженкинсом. Во-первых, он не смог найти ant.bat, который был исправлен путем добавления пути к ant.bat к пути переменной окружения системы. Тогда ant не удалось найти каталог jdk. Это было исправлено щелчком правой кнопки мыши по my computer > properties > advanced > environment variables и созданием новой переменной среды JAVA_HOME и присвоением ей значения C:\Program Files\Java\jdk1.7.0_21. Не создавайте эту переменную среды в User Variables. Создайте его только в системных переменных.
В обоих случаях мне пришлось перезапустить систему.

Ответ 19

Обычно эта проблема возникает. Я не могу установить какой-либо конкретный дом Java в своей системе, поскольку у меня есть 2 разных версии Java (Java 6 и Java 7) для разных условий. Чтобы устранить проблему, я включил путь JDK в конфигурацию запуска при открытии файла build.xml. Таким образом, 2 разных файла сборки используют 2 разных версии Java для сборки. Я думаю, что может быть лучшее решение этой проблемы, но, по крайней мере, вышеупомянутый подход избегает установки переменной JAVA_HOME.

Ответ 20

FYI, я использую Windows 7 и должен был перезапустить Windows, чтобы новая настройка JAVA_HOME вступила в силу.

Ответ 21

имела ту же проблему;

c:\jb\src\build.xml:191: 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 "C:\Program Files\Java\jre7"

Total time: 0 seconds

c:\jb\src>echo %JAVA_HOME%
c:\Program Files\Java\jdk1.7.0_13

решение:

path = c:\ant\bin\;%PATH%
path = c:\Program Files\Java\jdk1.7.0_17\bin;%PATH%
set "JAVA_HOME=c:\Program Files\Java\jdk1.7.0_13"

Я полагаю, что инструкция jdk path сама по себе сделает это, но я должен лениться, чтобы понять, что это решение является доказательством пули.: -)

Также, используя Windows7

Ответ 22

Быстрая работа для того же самого -

Скопировать C:\Program Files\Java\jdk1.6.0_14\lib\tools.jar в C:\Program Files\Java\jre6\lib\

Это исключение приходит, потому что JAVA_HOME устанавливается как C:\Program Files\Java\jre6 и Ant не может найти в нем tools.jar.

Ответ 23

Просто установите путь JDK на следующие шаги:

  • Перейдите в раздел "Выполнить" → Внешние инструменты → Конфигурация внешних инструментов

  • - > Выберите 'JRE' Затем из списка DropDown выберите доступный JDK. ех. jdk1.8.0_25

Ответ 24

Если вам нужно запустить ant в eclipse со встроенным eclipse jdk, добавьте следующую строку в build.xml

<property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>