Я создал проект webapp, используя maven в eclipse. когда я запускаю команду mvn package в командной строке, отображая следующую ошибку.
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
[INFO] 1 error
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.310s
[INFO] Finished at: Tue Mar 05 14:32:23 IST 2013
[INFO] Final Memory: 16M/218M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.0:compile (default-compile) on project Compilation fa
ilure
[ERROR] ***No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?***
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
Я попытался изменить jdk и jre. но не работает. все же он показывает ту же ошибку
В Windows 7 - 64 бит существует проблема с разрешениями, которая запрещает установщику распаковывать файл C:\Program Files\Java\jdk1.6.xx\lib\tools.jar
в локальный. Этот файл jar - это то, что использует maven-compiler-plugin
версия 3.x вместо обычного javac
Решение:
Запустите, как администратор, установщик Java JDK! И убедитесь, что tools.jar
находится в C:\Program Files\Java\jdk1.6.xx\lib\
Если вы используете плагин интеграции m2e maven, вы хотите, чтобы файл был виден Eclipse с помощью следующих шагов внутри Eclipse:
Затем настройте maven с помощью следующих шагов:
Перейдите в "Конфигурирование времени выполнения" и настройте JRE на JDK.
Или, как предложил @PawanKumarBaranwal, установите JDK по умолчанию. Но если у вас настроено более одного JRE,
Попробуйте это. Перейдите в Окно → Настройки → Java → Установленные JRE.
Дважды щелкните JRE, который находится внутри установленных JRE.
Дайте путь JDK (например, C:\Program Files\Java\jdk1.7.0_80\
) в JRE Home и дайте JRE имя как JDK.
Нажмите "Готово", а затем "ОК".
Для меня это сработало.
Что работало для меня (32-разрядная Windows 7), было добавить следующее в переменную среды пути:
% JAVA_HOME%\Lib;
Перейти к окнам → Настройки → Java → Установленные JRE
может быть jre уже добавлено
нажмите Добавить → Стандартная виртуальная машина → Далее → Каталог
и найдите JDK в моем случае, путь был C:\Program Files\Java\jdk1.8.0_111
затем нажмите "Готово".
вы увидите окно, подобное этому
выберите JDK → Apply → Ok
И все готово.
Можно указать несколько опций.
Шаги: прямо в проекте в проводнике проекта. Перейдите в Run- > Run Configuration → Нажмите Maven Build → Нажмите на конфигурацию сборки/или создайте новую конфигурацию. Вы увидите окно как данный снимок ниже, нажмите на вкладку JRE.
Вы видите, что у вас есть 3 варианта 1) Рабочая область по умолчанию JRE 2) Среда выполнения 3) Альтернативная JRE 1) Рабочая область По умолчанию JRE устанавливается из меню "Окно" вверху → Настройки → Java → Установленные JREs -Here you может добавить ваш jdk 2) Среда выполнения jdk может быть установлена в pom.xml
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<fork>true</fork>
<executable>C:\Program Files\Java\jdk1.7.0_45\bin\javac.exe</executable>
</configuration>
</plugin>
3) Альтернативный JRE можно использовать для выбора jdk из вашего каталога.
Перейдите к preferences>installed JRE>
затем нажмите add
выберите
C:\program files\java\
нажмите enter
он будет искать другой jre, чем jdk, а затем выбрать то, что не выбрано
В моем случае ошибка "Никакой компилятор не предоставляется в этой среде. Возможно, вы работаете на JRE, а не в JDK", из-за того, что JRE устанавливается в другом месте, чем его значение по умолчанию в JDK.
Запуск под 64-разрядным Linux, у меня есть 64-разрядная версия JDK SE 1.6.0_45 Oracle, установленная в /opt/java
. 32 и 64-битные JRE были установлены в /opt/java/jre32
и /opt/java/jre64
с символикой jre: (т.е. ln -s jre64 jre
), поэтому jre ->
./jre64 (meaning
/opt/jdk/jre was a symlink referencing
/опт/JDK/jre64).
Как только я переименовал jre64 в jre (т.е. rm jre ; mv jre64 jre ; ln -s jre jre64
), эта проблема исчезла; и я смог построить с помощью maven (внутри netbeans).
Maven, похоже, смотрит на путь JRE, говоря: "jre64 не является правильным именем для установки JRE-внутри JDK по умолчанию, поэтому предположим, что JDK не существует в.. /" ), что не позволит ему разрешить расположение каталога JDK lib, содержащего tools.jar и т.д.
Не тестировали, но то же самое может произойти в Windows, если JRE не находится в местоположении по умолчанию (или, возможно, не находится в каталоге %JAVA_HOME%\jre
). Если установлены JDK и JRE, установщик Oracle хочет установить JRE на %JAVA_HOME%\jre6
, а не %JAVA_HOME%\jr
e. Это может быть связано с тем, что для процесса удаления JDK необходим каталог \jre
; если JRE был установлен поверх JDK JRE в каталоге \jre
, а не в \jre
6, удаление JDK после удаления JRE завершится с ошибкой, если копия каталога \jre не будет удалена, JRE будет удалена и копия \jre
восстанавливается до \jre
.
После создания второго рабочего пространства для работы в отдельной ветки исходного кода я столкнулся с причудливой ситуацией, когда я мог сделать сборку Maven из командной строки в новом рабочем пространстве, но не в Eclipse. Я попытался установить конфигурацию JRE для JDK, как описано другими, но все равно не повезло. В конце концов мне пришлось искать все содержимое нового каталога рабочей области .metadata, чтобы найти файлы-нарушители, которые отказались от перенастройки. Главный виновник был
.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.launching.prefs
Это все еще указало на неправильный каталог несмотря на мое изменение конфигурации. Я выполнил ручное редактирование, чтобы указать правильное имя и местоположение JDK. Я также отредактировал файлы под
.plugins/org.eclipse.debug.core/.launches
Все это также указывало на JRE вместо JDK. После внесения этих изменений я мог создавать проекты во втором рабочем пространстве из Eclipse, а не только из командной строки.
сохранить путь jdk на первом месте в переменной пути, так что другой путь java будет проигнорирован. ошибка компиляции будет решена.
Я использую плагин maven для Eclipse (V3.3) и некоторое время пытаюсь справиться с этой ошибкой. Наконец, я нашел решение, которое связано с устаревшими источниками java: оно не имеет ничего общего с JRE или JDK (я использую JRE 1.7).
Я нашел на других форумах, что это известная проблема в maven-compiler-plugin (тот же результат для V3.3 и 3.5.1).
Итак, я просто перекомпилировал вручную устаревший источник и снова запустил цель, на этот раз без каких-либо проблем.
Чтобы узнать устаревшие источники, запустите цель с помощью опции -X (debug) и найдите записи, начинающиеся с
[DEBUG] Stale source detected:
указывающий файл класса java (для перекомпилирования вручную...).
Надеюсь, это может быть полезно, поскольку сообщение, предоставленное компилятором maven, заставило меня искать в неправильном направлении (играйте с JRE, JDK, JAVA-HOME и т.д.).
javac
?mvn -e package
?