Почему 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 в начале и в других интересных местах.
- В Eclipse щелкните " Выполнить" → " Внешние инструменты" → " Конфигурации внешних инструментов".
- Нажмите на вкладку JRE.
- Нажмите кнопку Установленные JREs...
- Нажмите кнопку Добавить.
(Выберите Standard VM, где это применимо.) - Нажмите кнопку Справочник.
- Найдите версию JDK (не JRE) установленной Java
(напримерC:\Program Files\Java\jdk1.7.0_04
). - Нажмите Готово и ОК.
- Выберите JDK на отдельной JRE и нажмите " Закрыть".
- Перезапустите свой 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 в системных переменных и если в пользовательских переменных есть запись для того же самого, то вы получите только последнюю.
Щелкните правой кнопкой мыши на "Мой компьютер", перейдите в свойства, перейдите на вкладку "Дополнительно" и выберите "Переменные среды", чтобы увидеть список переменных среды пользователя и системы.
Когда все остальное правильно, попробуйте следующее
- Окно перехода -> Настройки -> Ant -> Время выполнения -> ClassPath
- Разверните Global Entries и проверьте доступные инструменты jdk здесь.
- Добавьте требуемый tools.jar из определенной версии Java, такой как "C:\Program Files\Java\jdk1.6.0_45\lib\tools.jar"
- Теперь постройте и проверьте результаты.
Примечание: добавьте 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 из следующих шагов:
Перейдите в "Выполнить" -> Внешние инструменты -> Настройка внешних инструментов
-> Выберите "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