Почему 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 на следующие шаги:
Ответ 24
Если вам нужно запустить ant в eclipse со встроенным eclipse jdk, добавьте следующую строку в build.xml
<property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>