Почему ANT говорит мне, что JAVA_HOME не так, когда это не так? - PullRequest
58 голосов
/ 13 октября 2009

Я получаю ошибку:

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

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

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

Ответы [ 24 ]

76 голосов
/ 03 июля 2012
  1. В Eclipse нажмите Выполнить & rarr; Внешние инструменты & rarr; Конфигурации внешних инструментов .
  2. Откройте вкладку JRE .
  3. Нажмите кнопку Установленные JRE ... .
  4. Нажмите кнопку Добавить .
    (Выберите Стандартный VM , где это применимо.)
  5. Нажмите кнопку Directory .
  6. Найдите версию JDK (не JRE) установленной Java
    (например, C:\Program Files\Java\jdk1.7.0_04).
  7. Нажмите Готово и ОК .
  8. Выберите JDK в Отдельный JRE и нажмите Закрыть .
  9. Перезапустите свой Ant-скрипт - получайте удовольствие!

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

34 голосов
/ 13 октября 2009

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

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

17 голосов
/ 01 июня 2012

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

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

15 голосов
/ 06 апреля 2011

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

8 голосов
/ 02 января 2013

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

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

Это будет:

set JAVA_HOME=C:\Program Files (x86)\Java\jdk1.6.0_29
7 голосов
/ 09 октября 2012

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

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

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

5 голосов
/ 25 августа 2011

Чтобы решить эту проблему, добавьте файл tools.jar в окно-> настройки-> муравей-> время выполнения.

4 голосов
/ 04 июня 2011

В eclipse установите для установленного параметра JRE значение JDK - в проекте (свойства проекта -> Путь сборки Java -> Библиотеки) или в настройках по умолчанию (Java-> Установленные JRE). Параметр eclispe сильнее системной переменной.

3 голосов
/ 13 октября 2009

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

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

3 голосов
/ 11 июля 2011

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

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

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

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

...