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


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

C:devwsspringappbuild.xml: 81: не удается найти компилятор javac; com.солнце.инструменты.и javac.Главное не в classpath. Возможно, JAVA_HOME не указывает на JDK. В настоящее время он установлен на "C:Program файлыJavajre6"

но я четко установил мой JAVA_HOME, чтобы быть C:Program файлыJavajdk1.6. 0_14

где муравей получает это значение?

24 58

24 ответа:

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

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

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

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

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

кроме того, возможно, что у вас включено /bin в установите переменную окружения JAVA_HOME, и Муравей добавление /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 task fron Maven build, и у меня возникла проблема. Я исправил это как ниже шаги:

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

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

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

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

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

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

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

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

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

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

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

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

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

имеет нулевой смысл...единственное, о чем я могу думать, это то, что Sun представила эту ошибку в последней Java runtime (Java 7 Update 11) или ошибку в 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

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

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

  1. Окне -> Перейти Настройки -> Муравей -> Выполнения -> Классов
  2. разверните глобальные записи и проверьте инструменты jdk, доступные здесь.
  3. добавить нужные инструменты.jar из определенной версии java, такой как "C:\Program файлы\Java\jdk1.6.0_45\lib\tools.банку"
  4. Теперь построить и проверить результаты.

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

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

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

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

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

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

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

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

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

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

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

копировать C:\Program файлы\Java\jdk1.6.0_14\lib\tools.jar to C:\Program файлы\Java\jre6\lib\

это исключение приходит, потому что JAVA_HOME устанавливается как C:\Program файлы\Java\jre6 и Ant не могут найти инструменты.баночка в нем.

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

  1. перейти к "выполнить" - > внешние инструменты - > конфигурация внешних инструментов

  2. - > выберите 'JRE' Затем из выпадающего списка выберите доступный JDK . бывший. jdk1.8.0_25

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

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