В этой среде не предусмотрен компилятор. Возможно, вы работаете на JRE, а не на JDK?

496

Я компилирую проект в Eclipse, используя m2eclipse. Я установил путь JDK в Eclipse следующим образом:

Windows-->preferences-->installed jres--> jdk1.7.xx  path

Но это показывает ошибку

[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: 1.424s
[INFO] Finished at: Tue Oct 29 15:21:01 IST 2013
[INFO] Final Memory: 5M/15M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-   plugin:3.1:compile (default-compile) on project TEST-WEB: Compilation failure
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
  • 1
    как вы начинаете компиляцию? Командная строка? Затмение инструмент?
  • 0
    из инструмента eclipse Запустите настройку -> Цели: чистая установка
Показать ещё 4 комментария
Теги:
maven
java-7
m2eclipse

27 ответов

808
Лучший ответ
  • В своей Eclipse IDE перейдите в Окно > Настройки > Java > Установленные JRE > и проверьте свои установлены JRE. У вас должна быть запись с JDK.
  • Выберите Execution Env, как показано ниже. Нажмите ОК
  • Затем Щелкните правой кнопкой мыши в проекте → Maven Обновить проект

Кроме того, вам может потребоваться изменить Maven JRE (см. ответ @jlars62), который выглядит следующим образом. Goto Run → Run Configurations, выбрав Maven Build I, который я запускал (с левой панели). Затем я щелкнул вкладку JRE и выбрал параметр "Рабочая область по умолчанию JRE

Изображение 1474

  • 14
    @jaipster Я пытался сделать это, но я не смог найти JDK в левой панели, я вижу только JRE7. Ты знаешь почему?
  • 3
    Возможно, у вас на компьютере не установлен jdk7 или он не настроен в eclipse. Можешь подтвердить.
Показать ещё 9 комментариев
112

Для меня это именно то, о чем жалуется maven of eclipse.

Изображение 1475

Итак, я нажимаю кнопку Edit и меняю путь на папку JDK, затем очищаю проект, и все начинает работать

  • 3
    Я бы предпочел добавить JRE с помощью кнопки «Добавить», а затем манипулировать записью JRE, чтобы стать записью JDK! И после добавления JDK установите флажок рядом с записью JDK. Это уже должно решить проблемы, описанные в этом посте.
  • 3
    Это странно . потому что, как показывает заголовок диалогового окна, это должно поместить Installed JREs вместо папки jdk. Но это действительно решило мне проблему. Спасибо
Показать ещё 4 комментария
93

Для меня ничего не работало, пока я не сделал это изменение в моем 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>
    </plugins>
</build>

Другие примечания

Я мог видеть, что m2e выполнялся в JRE, а не JDK. Ничто из этого не изменило, включая добавление этого в eclipse.ini:

-vm
C:\Program Files\Java\jdk1.7.0_45\bin\javaw.exe

В конце концов, я никогда не получал m2e для выполнения в JDK, но явно задал компилятор Java (как указано выше).

  • 8
    Это решение должно быть реализовано в качестве крайней меры, так как сам проект модифицируется для подключения к текущей машине разработчика.
  • 0
    @ksnortum спасибо! это единственное, что заставило его работать на меня.
Показать ещё 2 комментария
79
  1. Задайте для переменной среды JAVA_HOME корневую папку JDK - требуется, если вы запускаете командную строку или maven (mvn).
    • (Для получения дополнительной информации JAVA_HOME Google JAVA_HOME)
  2. В свойствах проекта в разделе Java Compiler выберите необходимый JDK - если вы запускаете прямо из eclipse
  • 0
    Почему шаг 1 необходим?
  • 1
    @DuncanJones, первое требуется, если вы запускаете командную строку или maven (Google для этой переменной), второе - если вы запускаете прямо из Eclipse,
Показать ещё 4 комментария
31

В моем случае это было решено, выполнив следующее:

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

Изображение 1476

Изображение 1477

Я скопировал ответ на случай, если он по какой-то причине удален, но источник здесь

30

Я получал эту ошибку при попытке выполнить сборку maven из eclipse.

Для меня ответ шел RunRun Configurations, выбрав Maven Build, который я запускал (с левой панели). Затем я щелкнул вкладку JRE и выбрал опцию Workspace default JRE

  • 1
    Это необходимо проверить в дополнение к выбранному ответу выше.
  • 1
    Мне больше нравится это решение, так как оно не заставляет вас менять версию Java по умолчанию для других проектов.
24

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

может быть jre уже добавлено Изображение 1478

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

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

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

вы увидите следующее окно Изображение 1479

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

И все готово.

  • 0
    Спасибо за разделение пути JDK. Казалось, что люди могли выбрать другой вариант, чтобы щелкнуть JDK, когда у меня только JRE отображался с самого начала. Я добавил JDK с пути, который вы указали.
  • 0
    Это сработало для меня. Благодарю.
9

Я попробовал все вышеперечисленное, однако все равно получаю то же сообщение об ошибке.

В моем случае фактическая JRE была неправильно использована как JRE System Library в пути построения проекта, который явно перекрывал все эти другие параметры, обсуждаемые здесь.

Если это так, попробуйте следующее:

  • Откройте конкретные для проекта библиотеки пути сборки Java. Щелкните правой кнопкой мыши "Проект > Путь сборки > Настроить путь сборки..." и выберите вкладку "Библиотеки".
  • Выберите запись "Системная библиотека JRE" и нажмите "Удалить".
  • Нажмите "Добавить библиотеку...".
  • Появится мастер. Выберите "JRE System Library" и нажмите "Далее > ".
  • Теперь выберите правильный JDK (в моем случае "Рабочая область по умолчанию JRE", которую я настроенный с использованием JDK).
  • Закройте мастера, нажав "Готово".
  • Закройте диалоговое окно "Свойства", нажав "ОК".
  • 1
    Я попробовал все вышеупомянутые опции, упомянутые @ishu, но все еще получаю org.apache.maven.lifecycle.LifecycleExecutionException: не удалось выполнить цель org.apache.maven.plugins: maven-compiler-plugin: 3.1: compile (default-compile) в проекте hibernateTest1: ошибка компиляции, затем я попробовал ваше решение, но ошибки не изменились ... Пожалуйста, помогите мне.
  • 0
    Добавьте <build> <sourceDirectory>flockWebclient</sourceDirectory> <resources> <resource> <directory>resources</directory> <excludes> <exclude>**/*.java</exclude> </excludes> </resource> </resources> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> в вашем pom.xml
9

Альтернатива, если ответ jaipster не работает, - это перейти на:
Окно > Предпочтения > Java > Установленные JRE

Затем отредактируйте jre так, чтобы он указывал на jdk, а не jre (jre home, зарегистрированный в редакторе jre-пакетов)

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

  • 0
    Это было для меня. Забавно, что иногда я получаю ошибки, которые по умолчанию JRE ошибочно указывает на JDK.
7

Я столкнулся с той же проблемой при попытке создать jar файл приложения моего проекта с помощью mvn clean install, хотя приложение работало нормально при запуске из Eclipse.

Проблема была, действительно, слишком наивной, что я не установил переменную среды JAVA_HOME. Все, что мне нужно было сделать, это установить переменную окружения JAVA_HOME в каталог JDK, убедиться, что это не до "\ bin" и без точки с запятой ";" ,

Изображение 1480

Как я понял это как:

Приложение прекрасно работало в Eclipse, поскольку системная библиотека JRE ссылалась на JRE внутри папки JDK вместо внешней папки JRE без JDK. [Как хорошо объяснено в других ответах]

Эта конфигурация не относится к команде maven, которую мы запускаем в командной строке. Он по-прежнему будет искать переменную JAVA_HOME для доступа к системной библиотеке JRE, а когда она не найдена, она ссылается на внешнюю папку JRE без JDK.

6

Есть несколько вариантов для указания.

Шаги: Прямо в проекте в проводнике проекта. Выберите Run-> Run Configuration → Click Maven Build → щелкните конфигурацию сборки/или создайте новую конфигурацию. Вы увидите окно как данный снимок ниже, нажмите на вкладку JRE там.

Вы видите, что у вас есть 3 варианта 1) JRE по умолчанию для рабочей области 2) Среда выполнения 3) Альтернативный JRE Изображение 1481 1) JRE по умолчанию для рабочей области устанавливается из меню "Окно" вверху → Настройки → Java → Установленные JRE -Here вы можете добавить свой jdk Изображение 1482 2) Среду исполнения jdk можно установить в pom.xml, как упомянуто @ksnortum

<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>
</plugins>

3) Альтернативный JRE может быть использован для выбора JDK из вашего каталога

  • 0
    спасибо, это сработало для меня
6

Если вы выполняете команду Maven из cmd, убедитесь, что вы установили путь jdk перед запуском команды. В моем случае я создал файл .bat, содержащий следующее:

set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_60
start cmd.exe /k "cd c:\aem_proj\sis\aau"
5

У меня та же проблема, и я просто добавляю JAVA_HOME в переменные окружения.

Изображение 1483

4

Для меня JRE был в переменной окружения PATH до пути JDK

  1. C:\ProgramData\Oracle\Java\javapath
  2. C:\окр\jdk1.8.0_151\Bin

Поэтому я удалил 1. Вероятно, обмен их тоже исправит.

3

У меня есть решение.

Наиболее распространенным решением этой проблемы является изменение местоположения jdk в качестве Установленных JRE вместо JRE location, но это не помогло моя проблема в этот раз.

Итак, я сделал следующее, чтобы решить проблему. Разверните вкладку Установленные JRE, и вы найдете вкладку Execution environment.

Нажмите на свою любимую среду исполнения. В моем случае это было JAVASE-1.8. Там он показывает 2 варианта. JDK и JRE. Выберите JDK, и проблема будет решена.

Изображение 1484

3

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

Когда вы устанавливаете JDK, установщик спрашивает вас, где вы хотите установить файлы. По умолчанию в Windows это похоже на C:\Program Files\Java\jdk1.8.0_74 (или любую другую версию, которую вы устанавливаете).

Затем он запрашивает у вас каталог для установки JRE, который по умолчанию является чем-то вроде C:\Program Files\Java\jre1.8.0_74.

Обратите внимание, что один jdk 1.8.0_74, а другой jre 1.8.0_74

Я спешил, и, подумав, что установщик дважды задавал мне тот же вопрос, установите оба места установки JDK и JRE в D:\devtools\jdk\jdk1.8.0_74, в результате чего установщик перезапишет JDK с помощью JRE. Это привело, в частности, к отсутствующему javac.exe в моем ящике JDK и той же ошибке, о которой OP сообщал здесь во всех моих сборках maven.

2

В моем случае путь к системной переменной был расположен в папке "C:\ProgramData\Oracle\Java\javapath".

В папке "C:\ProgramData\Oracle\Java\javapath" java, только там javaw. Так что я получаю ту же ошибку.

Когда я удалил все файлы в папке "C:\ProgramData\Oracle\Java\javapath", моя ошибка была устранена.

2

Я просто потратил 3 часа на эту проблему, пока мне не удалось заставить ее работать. У меня была эта ошибка в терминале Eclipse при выдаче команды компиляции mvn:

В этой среде компилятор не предоставляется. Возможно, вы работаете на JRE, а не на JDK?

Итак, я прочитал здесь, что мне нужно создать новую системную переменную JAVA_HOME и указать ее на папку установки jdk. Однако это породило еще одну ошибку:

Исходный вариант 1.5 больше не поддерживается. Используйте 1.6 или новее

Не удалось найти исправление для этого, поэтому...

Итак, исправление, чтобы все это исчезло, - установить Java SE Development Kit 8! Я использовал 9, думая, что если это последнее, то должно быть лучше...

В любом случае...

Надеясь, что это избавит некоторых бедных странников от некоторых неприятностей.

1

Я получал ту же ошибку, когда создавал новый экземпляр EC2 Ubuntu 16.04 с уже установленной Java на нем, и во время работы пакета mvn clean я столкнулся с этой проблемой, и приведенное ниже решение сработало для меня.

Если вы работаете на сервере Ubuntu, то вы можете попробовать установить Java снова, и для этого вы можете использовать этот ответ Как установить JDK в Ubuntu Linux

1

Добавить новое определение JRE (выберите путь JDK), работал у меня.

http://help.eclipse.org/neon/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2Ftasks%2Ftask-add_new_jre.htm

1

i столкнулся с той же проблемой, я сделал ошибку, я добавил путь jre только в пути var, а не в пути jdk. Когда путь jdk был добавлен в путь и построил проект maven, он работает отлично. Спасибо всем

1

Попробуйте это.

<build>
...
    <plugins>
    ...
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <fork>true</fork>
                <executable> path to jdk \bin\javac.exe</executable>
            </configuration>
        </plugin>
    </plugins>
</build>
0

Мой ответ относится к Eclipse в среде Windows.

Я пошел в Настройки → Java → Установленные JRE, я НЕ видел JDK здесь. Я видел только JRE здесь. Поэтому я добавил JDK, а затем снял отметку с JRE. Затем проверил JDK. Затем я запустил POM файл, используя Run Configurations. Выберите вкладку JRE и выберите опцию "Рабочая область по умолчанию..." Вот изображения

Изображение 1485

Изображение 1486

0

Вам не хватает любой сборки maven.

Помимо вышеперечисленных изменений JRE. Я все еще сталкивался с подобной проблемой. Мне не хватало зависимости JUnit после добавления, она работает нормально.

Надеюсь, это поможет.

0

Есть несколько ответов на этот вопрос, но все они связаны с настройкой правильного пути JDK, но только с JRE мы можем решить эту проблему.

Нам просто нужно использовать сборку развертывания, чтобы настроить путь упакованного файла войны проекта Java EE, а затем повторно запустить maven-install.

Шаги по использованию сборки развертывания:

  • Щелкните правой кнопкой мыши по проекту Jave EE → нажмите Свойства   - > щелкните узел развертывания

  • Нажмите кнопку "Добавить" → Нажмите "Архивы из файла"   Система → Нажмите дальше → Нажмите Добавить → Перейти к   .m2\каталог репозитория и поиск созданного файла войны →   Выберите файл войны → Нажмите кнопку "Открыть" → Нажмите "Применить" → "ОК"

  • Щелкните правой кнопкой мыши по проекту → Нажмите на Maven Install под   Run As

Это приведет к успешному созданию вашего проекта без ошибок компилятора.

Надеюсь, что это решает проблему без JDK.

0

В дополнение к ответу выше, я могу сказать, что просто попробуйте запустить Maven с терминала (вне Eclipse). Таким образом, если он создается снаружи, но не в Eclipse, вы можете понять, что проблема должна быть в Eclipse.

0

Я сделал следующее изменение, и это сработало для меня. Надеюсь, это поможет кому-то. Изображение 1487

Сообщество Overcoder
Наверх
Меню