сбой сборки maven:Не удалось найти компилятор Javac в:проблема с jre или jdk
Вопрос
У меня есть мой JAVA_HOME, установленный на
C:\Program Files (x86)\Java\jdk1.6.0_18
После того, как я запускаю maven install, я получаю это сообщение от eclipse:
Причина:
Unable to locate the Javac Compiler in:
C:\Program Files (x86)\Java\jre6\..\lib\tools.jar
Please ensure you are using JDK 1.4 or above and
not a JRE (the com.sun.tools.javac.Main class is required).
In most cases you can change the location of your Java
installation by setting the JAVA_HOME environment variable.
Я уверен, что это самая сложная часть
Пожалуйста, убедитесь, что вы используете JDK 1.4 или выше и не JRE
Когда я запускаю конфигурацию, для нее установлено значение JRE6, как мне изменить его на JDK 1.6, который я уже установил
Редактировать
Я даже пытался модифицировать плагин :
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<executable>C:\Program Files (x86)\Java\jdk1.6.0_18\bin</executable>
</configuration>
</plugin>
Тем не менее я получаю ту же ошибку
Возможно , я забыл сказать , что использую плагин eclipse maven ..как я могу перейти с JRE на JDK в eclipse ?
Решение
Вы могли бы попробовать обновить JDK, который использует Eclipse, следующим образом:
Добавьте и установите JRE в Window-> Preferences...-> Java-> Установленные JREs:
JRE type: Standard VM JRE
Name: jdk1.6.0_18
JRE home directory: C:\Program Files (x86)\Java\jdk1.6.0_18
Если это не так, возможно, что скобки и пробелы в пути JAVA_HOME вызывают проблемы.Попробуйте скопировать ваш JDK в другое место и обновить ваш JAVA_HOME.
Другие советы
eclipse.ini требуется, чтобы аргумент vm указывал на ваше местоположение jdk.
Редактировать eclipse.ini
файл, указывающий на ваш jdk home, что-то вроде следующего -
-vm
C:\Program Files\Java\jdk1.6.0_06
Это гарантирует, что Eclipse будет работать с JDK, а не с любым JRE по умолчанию на вашем компьютере.
Ты попробуй:
Перейти к Preferences/Java/Installed JREs
и добавьте один для местоположения "C:\Program Files\Java\jdk1.6.0_27\jre
или что-то в этом роде.
Удалите тот, который для C:\Program Files\Java\jre6
Как вы можете видеть, путь C:\Program Files\Java\jre6\..\lib\tools.jar
имеет смысл только в том случае, если первая часть (до /..) заменена на C:\Program Files\Java\jdk1.6.0_27\jre
.
Установка Fork в true решила проблему для меня.
<configuration>
<fork>true</fork>
<source>1.6</source>
<target>1.6</target>
</configuration>
Большое тебе спасибо, Сэм Янг .. ты сделал мой день лучше
У меня была ТОЧНО такая же проблема!Искал несколько дней, потому что вся эта болтовня о "поместите -vm c:\program files\java\jdkxxxxx\bin" в ini ar в качестве аргумента для короткого замыкания ВООБЩЕ НЕ сработала!(Звучит ли мой голос разочарованным?Поверьте мне, это еще мягко сказано!Я просто в ярости, потому что потерял неделю, пытаясь сделать Maven надежным!)
У меня было очень непредсказуемое поведение.Иногда он компилируется, иногда нет.Если бы я сделал maven чистым, он не смог бы найти компилятор и потерпел неудачу.Если я затем что-то изменил в пути сборки, это внезапно заработало снова!!
Пока я не перешел в окно -> настройки -> java -> установленные JRE.Я добавил новую JRE, используя расположение JDK, а затем удалил JRE.Внезапно maven заработал стабильно!
Может быть, это стоит вставить буквами с размером шрифта 30 или около того в руководстве apache?При всем моем уважении, это просто возмутительно для java-сообщества!Я не могу представить, сколько дней было потеряно всеми этими людьми, пытаясь решить свои проблемы такого рода!Я не могу себе представить, что это выпущено как окончательная версия.Лично я бы даже не осмелился выпустить такую штуку под названием BETA software...
С наилучшими пожеланиями в любом случае....После недели манипуляций я, наконец, могу приступить к разработке.Я надеюсь, что мой босс не узнает об этом.Мне потребовалось много усилий, чтобы убедить его НЕ переходить на .NET, и я уже жалею об этом.
У меня возникла та же проблема, используя Run as -> Maven install в Eclipse.JAVA_HOME и eclipse.ini были в порядке и указывали на мой последний JDK.Но m2clipse использовал JRE.Использование mvn install вне Eclipse сработало нормально!В моем случае я решил проблему следующим образом:1.Навигация в Eclipse:Окно -> Настройки -> Java -> Установленные JRES 2.Было две неактивные записи для JRE и JDK.Активным был последний установленный JDK.Удалите все записи, кроме той, которую должен использовать maven.
Я думаю, что maven не учитывает, какой из них активен...
Я только что установил maven 3.0.4, установил M2_HOME
, M2
и JAVA_HOME
соответственно.Затем я выполнил следующие команды:
mvn archetype:generate....
mvn compile
Я получил неудачное сообщение, такое как: maven unable to locate javac compiler
.
На моем компьютере у меня установлена jre по умолчанию по адресу c:\program файлы\java\jre.1.6.И у меня есть другой c:\java\jdk1.6 и JAVA_HOME
установите на это c:\java\jdk1.6.
Я не вижу ничего плохого в моей настройке.После поисков я решил заглянуть в mvn.bat
, - Эхом повторил я %JAVA_HOME%
каждый шаг, и он корректно отображается в виде C:\java\jdk1.6
но когда я запускаю команду : mvn --version
, он отображает Java home: c:\program файлы\java\jre1.1.6.
Наконец, я обнаружил, что мне просто нужно установить -Djava.home=c:\java\jdk1.6
как в приведенной ниже команде, и сейчас работает нормально:
%MAVEN_JAVA_EXE% %MAVEN_OPTS% -classpath %CLASSWORLDS_JAR% "-Dclassworlds.conf=%M2_HOME%\bin\m2.conf" "-Djava.home=%JAVA_HOME%" "-Dmaven.home=%M2_HOME%" %CLASSWORLDS_LAUNCHER% %MAVEN_CMD_LINE_ARGS%
Надеюсь, это поможет.
Примечание:Это для mvn
в командной строке, а не с помощью Eclipse.
Похоже, Maven использует JRE, а не JDK.Возможно, вы установили Maven перед установкой JDK?
Проверьте файлы настроек.Всего их 3: система, пользователь и проект.Это, скорее всего, в конфигурации установки ($M2_HOME/conf/settings.xml) или, возможно, в конфигурации для каждого пользователя (${user.dir}/.m2/settings.xml).
Основываться на http://maven.apache.org/plugins/maven-compiler-plugin/examples/compile-using-different-jdk.html, вам нужно будет установить для fork значение true в вашем pom.xml.
Я решил проблему, изменив местоположение установленного JRE на каталог, присутствующий в самом JDK.Установка правильного значения JAVA_HOME
переменная окружения не решила проблему.
В моем случае существует два каталога
C:\Program Files\Java\jdk1.7.0_03 --> For JDK
C:\Program Files\Java\jre7 --> For JRE
Изначально я установил C:\Program Files\Java\jre7
поскольку установлен JRE в Eclipse, и я получал ту же ошибку в случае Maven (Ant работал нормально).
Изменив установленный JRE на C:\Program Files\Java\jdk1.7.0_03\jre7
после установки JRE в Eclipse проблема решена.
Только настройка Eclipse
Выполните следующие действия:
Щелкните правой кнопкой мыши на свойствах проекта Eclipse
Путь к сборке Java -> Библиотеки
Выберите системную библиотеку JRE -> Нажмите кнопку Редактировать
Нажмите кнопку "Установленные JREs..."
Редактировать JRE как:Установите JRE Home = JAVA_HOME или JAVA_HOME\jre
Скриншот:
Большое спасибо,
Партха
Щелкните правой кнопкой мыши Проект -> Свойства -> Путь сборки Java.Выберите системный путь JRE -> Редактировать.Выберите JRE рабочей области по умолчанию и укажите на JDK > 1.4
Window -> Preferences -> Java -> installed JREs -> Execution Enviroments -> click the checkbox on the right side
Решение простое, несколько раз eclipse windows -> preference -> java -> Установленные JRES, указывающие на C:\Program files\Java\jre
, когда я изменил его на C:\Program files\Java\JDK 6.0\jre
это работает на 100%.
Как упоминалось несколькими другими, Затмение Window->Preferences...->Java->Installed JREs
должен указывать на JDK вы установили, не в JRE.Только тогда он может найти ../lib
папка, упомянутая в сообщении об ошибке.
Даже при этом проблема может повториться.Мой выход в Eclipse (Juno) состоит в том, чтобы сделать Maven -> Update project...
после чего проблема исчезает.
Я подозреваю, что причина в том, что некоторые из файлов, сгенерированных Eclipse (.classpath, .project, .preferences), находятся в subversion для проекта, в котором у меня возникли эти проблемы.Таким образом, обновление svn приводит к возникновению проблемы, а обновление конфигурации из maven в Eclipse снова устраняет ее.
Реальное решение: исключить сгенерированные Eclipse .файлы из системы управления версиями, и пусть плагин maven eclipse обрабатывает конфигурацию проекта. (дополнительные указания / предложения приветствуются).
Не забывайте, что если вы запускаете свой проект из определенной конфигурации Eclipse, вам следует изменить среду выполнения Java в разделе "Конфигурации запуска" -> "Ваша конфигурация maven" -> "Вкладка JRE" после того, как вы добавите нужный JDK в свои настройки Eclipse.
В моем случае, в eclipse Run-> Debug Configurations
На вкладке jre выбранный jdk вместо jre решил проблему.
У меня была такая же проблема на Amazon Linux.Оказывается, мне пришлось установить разработанную версию jdk:
sudo yum -y install java-1.7.0-openjdk-devel
Перейдите в окно Eclipse-> Настройки ...-> Java-> Установленные JRES должны указывать на установленный вами JDK, а не на JRE.
Я бы предположил, что местоположение компилятора определено в pom, чтобы плагин компилятора находился в отображаемом местоположении jre, а не в местоположении jdk, на которое указывает JAVA_HOME.
Если вы установили JAVA_HOME, а проблема не устраняется, попробуйте следующее.(у меня была такая же проблема на только что установленном компьютере.)
Предполагая, что вы используете Eclipse.
- Откройте окно - настройки - java - установленные jre удалите все, что у вас там есть, добавьте желаемый, который вы хотите использовать (JDK, без JRE!)
- В том же окне откройте maven - установки, добавьте установку mave, которую вы где-то скачали и извлекли.(НЕ ИСПОЛЬЗУЙТЕ встроенную установку maven, в ней есть некоторые известные ошибки)
Вот и все.ваш проект не будет страдать от серьезных проблем.Надежда помогает.
Вы также можете убедиться, что Eclipse содержит все обновленные изменения.Чтобы сделать это, щелкните правой кнопкой мыши ваш проект, а затем нажмите пункт меню "Обновить".
Вам необходимо указать JAVA_HOME
в mvn.ini
(это находится в папке maven /bin
), и ваша проблема исчезнет.
Многие другие ответы советуют вам указать вашему Eclipse на JDK вместо JRE.
Вот еще один ответ с более конкретным / четким [чем я видел в любом ответе здесь] пошаговым описанием того, как это сделать: Как вы устанавливаете JDK?
Вот что для меня решило эту же проблему.
У меня была такая же ошибка, из-за версии JUNIT, у меня было 3 3.8.1, и я изменился на 4.8.1.
таким образом, решение таково
вы должны зайти в POM и убедиться, что ваша зависимость выглядит следующим образом
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.1</version>
<scope>test</scope>
</dependency>
Я изменил конфигурацию maven-compiler-plugin, чтобы добавить исполняемый файл и разветвление со значением true.
<configuration>
<fork>true</fork>
<source>1.6</source>
<target>1.6</target>
<executable>C:\Program Files\Java\jdk1.6.0_18\bin\javac</executable>
</configuration>
У меня это сработало.
Убедитесь, что "-vm" в вашем eclipse.ini находится в двух отдельных строках, т. е.:
-vm
C:\Program Files\Java\jdk1.6.0_06
делай Echo %JAVA_HOME%
тогда mvn --version
JRE
путь должен быть таким же....тогда уходи Window -> preferences - java - installed jre's
местоположение должно быть таким же, как то, что Java_Home
показывает.
Перейдите в Свойства, щелкнув правой кнопкой мыши по проекту.
В СВЯЗАННЫХ РЕСУРСАХ добавьте новый путь с именем JAVA_HOME и укажите местоположение вашего jdk, что-то вроде "C:\Program Files\ Java\jdk1.8.0_73"
Вот и все!!
Решение этой проблемы очень простое....
Если у вас нет МУРАВЕЙ создайте файл, затем сгенерируйте его.В eclipse вы можете легко создать МУРАВЕЙ файл.
Перейдите по ссылке для создания МУРАВЕЙ файл сборки [http://www.codejava.net/ides/eclipse/how-to-create-ant-build-file-for-existing-java-project-in-eclipse].
Теперь следуйте приведенным шагам:
1) Добавьте свой МУРАВЕЙ создайте файл в ANT view, который находится в окне просмотра.
2) щелкните правой кнопкой мыши на вашем МУРАВЕЙ создайте файл и выберите Запускайте Как и второй вариант в этой "Муравьиной сборке".
3) Теперь откроется диалоговое окно с различными опциями и вкладками.
4) Выберите JRE вкладка.
5) вы увидите 3 переключателя, и в качестве опции для них будут выбраны JRE или JDK.
6) Внимательно посмотрите, есть ли у опций переключателя JRE как выбрано, затем измените его на JDK.
7) Нажмите применить.
Вот и все...!!!