Ошибка компиляции пакета Maven

Я создал проект 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. но не работает. все же он показывает ту же ошибку

Ответ 1

В 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:

  • Перейти к окну → Настройки → Java → установлены JRE
  • Выберите JDK, который вы используете (C:\Program Files\Java\jdk1.6.xx)
  • Нажмите "Изменить", чтобы просмотреть список баннеров, включая tools.jar, OW, вы можете добавить его как "Добавить внешний JAR"

Затем настройте maven с помощью следующих шагов:

  • Run- > Run configurations- > Заполните имя, базовый каталог и цели.
  • Затем в том же окне перейдите на вкладку JRE и укажите JDK\jdk1.6.xx\

Ответ 2

Перейдите в "Конфигурирование времени выполнения" и настройте JRE на JDK.

Выберите правильный JDK для вашей Runtime

Или, как предложил @PawanKumarBaranwal, установите JDK по умолчанию. Но если у вас настроено более одного JRE,

Выбрать по умолчанию JRE

Ответ 3

Что работало для меня (32-разрядная Windows 7), было добавить следующее в переменную среды пути:

% JAVA_HOME%\Lib;

Ответ 4

Попробуйте это. Перейдите в Окно → Настройки → Java → Установленные JRE.

Дважды щелкните JRE, который находится внутри установленных JRE.

Дайте путь JDK (например, C:\Program Files\Java\jdk1.7.0_80\) в JRE Home и дайте JRE имя как JDK. Нажмите "Готово", а затем "ОК".

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

Ответ 5

В моем случае ошибка "Никакой компилятор не предоставляется в этой среде. Возможно, вы работаете на 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.

Ответ 6

Перейдите к preferences>installed JRE>

затем нажмите add

выберите C:\program files\java\

нажмите enter

он будет искать другой jre, чем jdk, а затем выбрать то, что не выбрано

Ответ 7

Можно указать несколько опций.

Шаги: прямо в проекте в проводнике проекта. Перейдите в 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 из вашего каталога.

Ответ 8

Перейти к окнам → Настройки → Java → Установленные JRE

может быть jre уже добавлено введите описание изображения здесь

нажмите Добавить → Стандартная виртуальная машина → Далее → Каталог

и найдите JDK в моем случае, путь был C:\Program Files\Java\jdk1.8.0_111

затем нажмите "Готово".

вы увидите окно, подобное этому

введите описание изображения здесь

выберите JDK → Apply → Ok

И все готово.

Ответ 9

установить путь ниже

сохранить путь jdk на первом месте в переменной пути, так что другой путь java будет проигнорирован. ошибка компиляции будет решена.

Ответ 10

После создания второго рабочего пространства для работы в отдельной ветки исходного кода я столкнулся с причудливой ситуацией, когда я мог сделать сборку 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, а не только из командной строки.

Ответ 11

Я использую плагин 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 и т.д.).