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

633

Я собираю проект в 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
как вы начинаете компиляцию? Командная строка? Затмение инструмент?
Джоэри Хендрикс
из инструмента eclipse. Выполнить настройку -> Цели: чистая установка
Sai prateek
возможный дубликат ошибки компиляции пакета Maven
mlt
7
Эй, эта ошибка появляется, потому что Maven пытается получить JDK, но в затмении указывает на JRE. Вы можете изменить путь к JDK, и он будет работать. Проверьте ниже сообщение, которое поможет вам learn-automation.com/…
Мукеш Отвани
Я публикую ссылку, чтобы кто-то в будущем мог получить выгоду, как и я. stackoverflow.com/a/33873838/4525120
божественный

Ответы:

983
  1. В Eclipse IDE перейдите в « Окно» > « Установки» > « Java» > « Установленные JRE» > и проверьте установленные «JRE» . У вас должна быть запись с JDK там.
  2. Выберите Env Execution, как показано ниже. Нажмите ОК
  3. Затем щелкните правой кнопкой мыши на вашем проекте -> Maven -> Обновить проект

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

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

jaipster
источник
15
@jaipster Я пытался сделать это, но я не смог найти JDK в левой панели, я вижу только JRE7. Ты знаешь почему?
diyoda_
4
Возможно, у вас на компьютере не установлен jdk7 или он не настроен в eclipse. Можешь подтвердить.
Jaipster
52
@ Диод У меня была такая же проблема. Я пошел в «Установленные JRE» и нажал «Добавить». Оттуда я перешел к C: \ Program Files \ Java \ jdk1.7.0_XX и затем смог выбрать jre, как описано в jaipster.
Илунавтград,
7
Для меня было достаточно просто добавить JDK в список «Установленных JRE» (не лучшее именование ...) и установить флажок рядом с новой записью JDK, сделав ее виртуальной машиной по умолчанию.
Том Финк
7
Я нажал кнопку «Поиск» в меню «Установленные JRE». Eclipse обыскал один из дисков, на который я указал, и вышел со всеми установленными JRE и JDK.
Митра Бой
141

Для меня это именно то, на что жалуется девица затмения

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

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

Тайский тран
источник
3
Я бы предпочел добавить JRE с помощью кнопки «Добавить», а затем манипулировать записью JRE, чтобы стать записью JDK! И после добавления JDK установите флажок рядом с записью JDK. Это уже должно решить проблемы, описанные в этом посте.
Том Финк
3
Это странно . потому что, как показывает заголовок диалога, Installed JREsвместо папки jdk должна быть размещена папка. Но это действительно решило мне проблему. Спасибо
Joe.wang
Он называется «Установленные JRE», но путь - JDK, но в любом случае это работает, спасибо
Абхиджит Чакра
Хорошая идея удалить JRE после добавления JDK. Иногда Eclipse продолжает использовать JRE независимо от того, почему это так. Помогает сделать JDK единственной доступной опцией. :)
левый бит
128
  1. Задайте для JAVA_HOMEпеременной среды корневую папку JDK - требуется, если вы запускаете командную строку или maven ( mvn).
    • (Поиск Google для JAVA_HOMEполучения дополнительной информации)
  2. В свойствах проекта в разделе Java Compiler выберите необходимый JDK - если вы запускаете прямо из eclipse
msangel
источник
Почему шаг 1 необходим?
Дункан Джонс
2
@DuncanJones, первое требуется, если вы запускаете командную строку или maven (Google для этой переменной), второе - если вы запускаете прямо из затмения,
msangel
1
Я бы добавил эту информацию в ваш ответ. В противном случае это предполагает, что оба необходимы во всех случаях.
Дункан Джонс
10
Обратите внимание, что JAVA_HOME не заканчивается на «bin», но указывает на корень JDK.
Коппор
Это необходимо для релиз-плагина, так как он не использует настройки jre из eclipse (с внешней установкой maven) ...
Rob
124

Для меня ничего не работало, пока я не сделал это изменение в моем 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-компилятора явно (как выше) сделала свое дело.

ksnortum
источник
10
Это решение должно быть реализовано в качестве крайней меры, так как сам проект модифицируется для подключения к текущей машине разработчика.
экстремальный байкер
@ksnortum спасибо! это единственное, что заставило меня работать.
Энтони Фуэнтес Артавиа
А как насчет людей Linux здесь?
логика
Я подозреваю, что это почти то же самое, за исключением того, что исполняемый файл будет / path / to / java / bin / javac. Может быть, попробуйте 'какой java` найти ваш путь к Java.
ksnortum
41

В моем случае это было решено с помощью этого:

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

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

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

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

Эдуардо Деннис
источник
Это сработало для меня. Если JDK не отображается в раскрывающемся списке «Альтернативный JRE», необходимо добавить «Установленный JRE» (перейдите в папку, где установлен JDK) и выберите папку «JDK».
Атул
Это была моя проблема, спасибо за ваш ответ, она была решена.
Amr Afifi
38

Я получал эту ошибку при попытке сделать maven-сборку из затмения.

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

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

Зайдите в windows -> Настройки -> Java -> Установленные JRE

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

нажмите Добавить -> Стандартная ВМ -> Далее -> Каталог

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

затем нажмите на готово.

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

выберите JDK -> Применить -> ОК

И вы сделали.

Гауранг Омар
источник
1
Спасибо за разделение пути JDK. Казалось, что люди могли выбрать другой вариант, чтобы щелкнуть JDK, когда у меня только JRE отображался с самого начала. Я добавил JDK с пути, который вы указали.
In-Young Choung
19

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

env var

  • Если вы используете затмение, просто обратитесь https://stackoverflow.com/a/21279068/6097074
  • Если вы используете intellij, сразу после добавления JAVA_HOMEоткрытой командной строки из каталога проекта и запуска mvn clean install(не используйте терминал intellij).
Анкит
источник
14

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

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

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

  1. Откройте библиотеки проекта пути сборки Java: щелкните правой кнопкой мыши «Project> Build Path> Configure Build Path ...» и выберите вкладку «Libraries».
  2. Выберите запись «JRE System Library» и нажмите «Удалить».
  3. Нажмите «Добавить библиотеку ...».
  4. Волшебник всплывает. Выберите «Системная библиотека JRE» и нажмите «Далее>».
  5. Теперь выберите правильный JDK (в моем случае «JRE рабочей области по умолчанию», который я настроил с помощью JDK).
  6. Закройте мастера, нажав «Готово».
  7. Закройте диалог «Свойства», нажав «ОК».
Сэр хакалот
источник
1
Я перепробовал все вышеуказанные опции, упомянутые @ishu, но все еще получаю org.apache.maven.lifecycle.LifecycleExecutionException: не удалось выполнить цель org.apache.maven.plugins: maven-compiler-plugin: 3.1: compile (default-compile) в проекте hibernateTest1: ошибка компиляции, затем я попробовал ваше решение, но ошибки не изменились ... Пожалуйста, помогите мне.
Намрата Чоудхари
Добавьте <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
Alekya
11

Альтернативой, если ответ jaipster не работает, является переход к:
Window> Preferences> Java> Установленные JRE

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

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

brunoais
источник
Это было для меня. Забавно, что иногда я получаю ошибки, которые JRE по умолчанию ошибочно указывает на JDK.
Salsero69
работал для меня, я хочу сделать maven чистой установки компиляции
asifaftab87
10

Если вы запускаете 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"
Mahder
источник
8

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

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

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

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

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

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

Давал Симария
источник
6

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

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

Вы видите, что у вас есть 3 варианта 1) JRE рабочей области по умолчанию 2) Среда выполнения 3) Альтернативная JRE введите описание изображения здесь 1) JRE рабочей области по умолчанию устанавливается из меню «Окно» вверху -> Настройки -> Java -> Установленные JRE - Здесь вы можете добавить свои JDK введите описание изображения здесь 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 из вашего каталога

manntsheth
источник
5

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

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

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

Флорин Д
источник
5

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

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

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

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

Кришна Раджагопалан
источник
5

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

Решение

Пожалуйста, установите переменную среды, как показано ниже, чтобы решить проблему

Имя переменной : JAVA_HOME

Значение переменной : C: \ Program Files \ Java \ jdk1.8.0_202

Имя переменной : M2_HOME

Значение переменной : C: \ Program Files \ apache-maven-3.6.0

Кроме того , добавьте Java и путь maven в « Системные переменные », как показано ниже:

  1. C: \ Program Files \ Java \ jdk1.8.0_202 \ bin

  2. C: \ Program Files \ apache-maven-3.6.0 \ bin

Навдип Гхотра
источник
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.

Сэм
источник
3

Я получил решение.

Наиболее распространенным решением этой проблемы является изменение местоположения JDK в качестве моих установленных JRE вместо местоположения JRE но это не решило мою проблему в этот раз.

Поэтому я сделал ниже, чтобы решить проблему. Разверните вкладку Установленные JRE, и вы найдете вкладку Среды выполнения .

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

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

Vero J
источник
2

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

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

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

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

Не могу найти решение для этого, так что ...

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

Тем не мение...

  1. Удалите все версии Java с вашего компьютера
  2. Установите JDK8 отсюда: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

  3. Затем определите значение среды системы JAVA_HOME - учебное пособие здесь: https://docs.oracle.com/cd/E19509-01/820-3208/inst_cli_jdk_javahome_t/

  4. Перезапустите Eclipse и наслаждайтесь! (по крайней мере, это то, что я сделал)

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

JustNatural
источник
2

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

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

После удаления всех файлов в папке «C: \ ProgramData \ Oracle \ Java \ javapath» моя ошибка была устранена.

Раджа
источник
2

Я попробовал большинство ответов без успеха. То, что работало для меня, было (после следующего https://stackoverflow.com/a/21279068/2408893 ):

  • щелкните правой кнопкой мыши на проекте -> Свойства
  • выберите Java Build Path
  • выберите Системную библиотеку JRE
  • нажмите изменить
  • В среде исполнения выберите JDK

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

  • нажмите Готово
  • построить и запустить
Эмиль Марас
источник
2

Хотя вопрос об ошибке при Eclipseустановке, но думал, что решение этой ошибки с установкой IntelliJWindows 10 также может быть полезным здесь.

1 . Перейти к File-> Settings-> Build, Execution, Deployment-> Build Tools-> Maven->Importing

2 . Установите JDKдля Importerкак показано нижеJAVA_HOME

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

Также JAVA_HOMEследует установить JDKпуть в Переменные среды -> Системные переменные, а также добавить %JAVA_HOME%\binв путь Системные переменные

Нафиз Курайши
источник
1

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

Сапна
источник
1

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

Кунал Хайре
источник
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>
Wagh
источник
1

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

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

Ишан Оджа
источник
1

В Windows 7 - 64-битной системе существует проблема с разрешениями, которая не позволяет установщику распаковать файл C: \ Program Files \ Java \ jdk1.6.xx \ lib \ tools.jar в локальную папку. Этот jar-файл - то, что использует maven-compiler-plugin version 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). Нажмите «Правка», чтобы увидеть список jar-файлов, включая tools.jar, ИЛИ вы можете добавьте его как Add External JAR. Затем настройте запуск maven с помощью следующих шагов:

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

Parthiban
источник
0

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

Ad Infinitum
источник
0

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

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

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

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

  2. Нажмите кнопку «Добавить» -> нажмите «Архивы» из файловой системы -> нажмите «Далее» -> нажмите «Добавить» -> перейдите в каталог .m2 \ respository и найдите созданный файл войны -> выберите файл войны -> Нажмите кнопку Открыть -> Нажмите Применить -> ОК

  3. Щелкните правой кнопкой мыши на проекте -> Нажмите на Maven Install в разделе «Запуск от имени».

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

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

С Кумар
источник