Почему 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 получает это значение?

13.10.2009 07:55:56
Как вы установили %JAVA_HOME%? Вы перезапустили Windows после внесения изменений?
mob 13.10.2009 08:03:34
Я бы подумал, что перезапуск не нужен сейчас, когда у нас есть Windows Vista - насколько сложно зарегистрировать изменение без перезапуска. Но что вы знаете, это, казалось, добилось цели.
Ankur 13.10.2009 08:41:04
Действительно, вам не нужно перезагружать Windows в XP и выше. Но вы должны породить другую консоль ...
PhiLho 13.10.2009 13:24:44
Windows не собирается менять блок среды уже запущенных программ, когда вы устанавливаете новую переменную среды в оболочке.
Rob K 22.11.2010 14:38:28
Пожалуйста, ознакомьтесь с установкой Apache Ant. ant.apache.org/manual/install.html
Aniruddha Jagtap 30.01.2012 20:28:04
24 ОТВЕТА
РЕШЕНИЕ

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

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

34
13.10.2009 07:59:59
После нескольких часов это было так. Убедитесь, что JAVA_HOME установлен в C: \ Program Files \ Java \ jdk1.6.0_14. НЕ каталог jre, НЕ каталог bin
Christiaan Westerbeek 2.12.2012 10:22:41
То, что сказал Кристиан, было правильным способом сделать это. Кроме того, помните НЕ; после пути. Глупо, я знаю.
Tanmay 20.07.2014 09:07:40
«Кроме того, помни НЕ; после пути». Спасибо за комментарий.
rich97 28.07.2014 11:15:53

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

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

3
13.10.2009 08:05:40

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

2
17.12.2013 22:50:22

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

16
5.04.2011 21:00:49
Я не могу кричать это достаточно громко. Это именно то, что я сделал не так. Он продолжал догадываться, пытаясь использовать несуществующую JRE, когда я указывал на JDK. Это было действительно неприятно. Как сказал @tom, просто удалите трейлинг bin/из вашего JAVA_HOME, и он будет работать.
kmort 17.04.2013 15:28:07

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

4
4.06.2011 07:21:36

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

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

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

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

3
11.07.2011 19:40:33
О боже ... борюсь с этой ошибкой уже час. Спасибо Брэндон, это действительно спасло меня.
Arjun 7.11.2013 07:06:57

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

5
25.08.2011 09:40:48
к classpath? и если да, глобальные записи или другие?
clankill3r 20.09.2012 18:04:38
Я использую простое встроенное приложение в Eclipse. Я добавил поддержку GLASSFISH JSP, но продолжал получать эту ошибку. Я попробовал несколько решений здесь. Единственное, что сработало для меня, - это предложение ... добавить tools.jar из каталога lib JDK. Спасибо.
ChrisCantrell 19.01.2013 14:15:03

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

18
1.06.2012 00:00:20
черт. Я полностью забыл о вилке. Спасибо!
int21h 5.01.2015 04:25:08
Вероятно, у вас есть JRE / bin в PATH до JDK / bin (это делает установщик). так как ant - это java-программа, запускаемая через java.exe - если она подхватывает JRE / bin / java.exe, она устанавливает JAVA_HOME в соответствии с расположением JRE. Если JDK / bin сначала находится в пути, он заберет java.exe из JDK и установит JAVA_HOME в расположение JDK. fork = "yes" работает, так как запускает новый процесс, запускается javac.exe, его нет в JRE / bin, поэтому он пропускает JDK / bin и находит его там. Приветствия - Марк
Mark O'Donohue 10.11.2018 10:16:39

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

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

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

78
24.09.2014 12:44:47

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

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

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

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

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

7
9.10.2012 08:22:30

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

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

0
16.10.2012 11:25:38

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

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

Это будет:

set JAVA_HOME=C:\Program Files (x86)\Java\jdk1.6.0_29
8
1.01.2013 20:18:14

На самом деле нашел этот ответ на 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

2
25.01.2013 22:06:51

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

0
25.04.2013 11:25:26

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

0
8.09.2013 12:48:57

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

0
17.12.2013 21:07:05

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

0
17.12.2013 22:09:16

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

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

0
6.01.2014 16:30:34

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

  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).

2
27.03.2014 21:14:06

Быстрая работа для того же

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

0
20.06.2014 19:56:47

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

  1. Перейдите в «Выполнить» -> Внешние инструменты -> Конфигурация внешних инструментов

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

1
14.01.2016 18:59:41

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

<property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
0
24.03.2016 17:05:58