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

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

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 ответа

Решение

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

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

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

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

Я столкнулся с той же проблемой при попытке запустить сборку 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

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

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

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

Это будет:

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

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

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

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

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

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

Точка с запятой отбрасывала меня: у меня было 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 указывается точка с запятой, но это, кажется, нарушает ее.

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

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

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

  1. Окно перехода -> Настройки -> Ant -> Время выполнения -> ClassPath
  2. Разверните Global Entries и проверьте доступные инструменты jdk здесь.
  3. Добавьте требуемый tools.jar из определенной версии Java, такой как "C:\Program Files\Java\jdk1.6.0_45\lib\tools.jar"
  4. Теперь постройте и проверьте результаты.

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

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

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

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

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

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

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

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

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

  1. Перейдите в "Выполнить" -> Внешние инструменты -> Настройка внешних инструментов

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

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

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

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

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

(ясно, что сообщение об ошибке сбивает с толку)

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

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

Быстрая работа вокруг того же

Скопируйте 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.

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

Я также столкнулся с той же проблемой. Я использую 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.

Была такая же проблема;

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

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

Другие вопросы по тегам