У цьому середовищі не передбачений компілятор. Можливо, ви працюєте на 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
як ви починаєте компіляцію? Командний рядок? Засіб затемнення?
Joeri Hendrickx

від інструмента затемнення Запустити конфігурацію -> Цілі: чиста установка
Sai prateek


7
Гей, ця помилка виникає тому, що Мейвен намагається отримати JDK, але в затемненні вказує на JRE. Ви можете змінити шлях до JDK, і він буде працювати. Перегляньте нижче пост, який допоможе вам Learn-automation.com/…
Mukesh otwani

Я надсилаю посилання на це, щоб хтось у майбутньому отримав користь, як я. stackoverflow.com/a/33873838/4525120
божественний

Відповіді:


982
  1. На вашому IDE Eclipse перейдіть у вікно > налаштування > Java > встановлені JRE > та перевірте встановлені JRE . У вас там має бути запис із JDK.
  2. Виберіть команду Execution Env, як показано нижче. Натисніть кнопку ОК
  3. Потім клацніть правою кнопкою миші на вашому проекті -> Maven -> оновити проект

Крім того, можливо, вам доведеться змінити Maven JRE (див. Відповідь @ jlars62), яка полягає в наступному. Перейти до запуску -> Запустити конфігурації, вибравши команду Maven Build I, яку я виконував (з лівої панелі). Потім я натиснув вкладку JRE і обрав опцію JRE для робочої області за замовчуванням

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


15
@jaipster Я намагався це зробити, але не зміг знайти jdk на лівій панелі, я бачу лише jre7. Ти знаєш чому?
diyoda_

4
Це може бути або у вас не встановлений jdk7 на вашій машині, або він не налаштований у затемнення. Ви можете підтвердити.
джейпстер

52
@Diode У мене була така ж проблема. Я перейшов до "Встановлені JRE" і натиснув "Додати ...". Звідти я перейшов до C: \ Program Files \ Java \ jdk1.7.0_XX, і тоді я міг вибрати jre як описаний jaipster.
jlunavtgrad

7
Для мене достатньо було просто додати JDK до списку "Встановлені JRE" (не найкраще називання ...) та встановити прапорець біля нового запису JDK, що робить його VM за замовчуванням.
Том Фінк

7
Я натиснув кнопку "Пошук" у меню "Встановлені JRE". Eclipse шукав один з дисків, на який я вказав, і вийшов із усіма встановленими JRE та JDK.
Хлопчик Мітра

141

Для мене це саме те, на що скаржиться діва затемнення

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

Отже, я натискаю Editкнопку і змінюю шлях до папки JDK, потім очищую проект і все починає працювати


3
Я б краще запропонувати додати JRE за допомогою кнопки "Додати", а потім маніпулювати записом JRE, щоб стати записом JDK! А після додавання JDK встановіть прапорець біля запису JDK. Це вже повинно вирішити питання, описані в цій публікації.
Том Фінк

3
Це дивно. тому що, як показує заголовок діалогового вікна, він повинен розміщувати Installed JREsзамість папки jdk. Але це дійсно вирішило мені проблему. Спасибі
Joe.wang

Назву було встановлено JREs, але шлях є JDK, але все одно це працює завдяки
Абхіджіт Чакра

Корисно видалити JRE після додавання JDK. Іноді Eclipse продовжує використовувати JRE незалежно - не маю уявлення, чому це так. Зробити JDK єдиним доступним варіантом допомагає. :)
ліворуч

126
  1. Встановити JAVA_HOMEзмінну середовища в кореневу папку JDK - потрібно, якщо ви запускаєте командний рядок або maven (mvn ).
    • (Шукайте в Google для JAVA_HOMEотримання додаткової інформації)
  2. В властивостях проекту в розділі Java Compiler виберіть необхідний JDK - якщо ви запускаєте безпосередньо від затемнення

Чому необхідний крок 1?
Дункан Джонс

2
@DuncanJones, по-перше, потрібно, якщо ви запускаєте командний рядок або maven (google для цієї змінної), друге - якщо ви запускаєте безпосередньо від eclipse,
msangel

1
Я додав би цю інформацію до вашої відповіді. Інакше він говорить про те, що обидва необхідні у всіх випадках.
Дункан Джонс

10
Зверніть увагу, що JAVA_HOME не закінчується на "бін", а вказує на корінь JDK.
коппор

Це потрібно для випуску плагіна, оскільки він не використовує параметри jre від eclipse (із зовнішньою установкою Maven) ...
Роб

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 явно (як вище) зробило свою справу.


10
Це рішення слід реалізовувати в крайньому випадку, оскільки сам проект модифікується для того, щоб він поєднувався з вашим поточним розробником.
Xtreme Biker

@ksnortum дякую! це єдине, що змусило мене працювати.
Антоні Фуентес Артавія

Що тут з нами, людьми Linux?
logicbloke

Я підозрюю, що це майже те саме, за винятком того, що виконуваний файл буде / 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 BuildI Run (з лівої панелі). Потім я натиснув на JREвкладку і вибрав варіантWorkspace default JRE


1
Це, здається, необхідно перевірити на додаток до обраної відповіді вище.
nsandersen

1
Мені подобається це рішення краще, оскільки це не змушує вас змінювати версію Java для замовчування для інших проектів.
Gonen I

30

Перейдіть у вікно -> Налаштування -> Java -> Встановлені JRE

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

натисніть кнопку Додати -> Стандартний VM -> Далі -> Каталог

і перегляньте 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 в конкретному проектному конвеєрі, який, очевидно, перекриває всі інші налаштування, обговорені тут.

Якщо це так у вашому випадку, спробуйте наступне:

  1. Відкрийте бібліотеки, що відповідають проекту, на шляху Java Build Path: клацніть правою кнопкою миші "Project> Path Build> Configure Build Path ..." та виберіть вкладку "Бібліотеки".
  2. Виберіть запис "Системна бібліотека JRE" та натисніть "Видалити".
  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>у свій пом.xml
Алек’я,

11

Альтернативою, якщо відповідь джейпстера не працює, є перейти до:
Window> Preferences> Java> Installed JREs

Потім відредагуйте jre так, щоб він вказував на jdk, а не на jre (додому jre, поданий у редакторі пакету jre)

Це працювало для мене.


Це було для мене. Смішно, що іноді я отримую помилки, що JRE за замовчуванням помилково вказує на JDK.
Salsero69

працював на мене, я хочу зробити Maven clean install install compile
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"

8

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

Проблема була справді занадто наївною, що я не встановив змінну середовища JAVA_HOME . Все, що мені потрібно було зробити, це встановити змінну середовища JAVA_HOME у каталог JDK, переконайтесь, що вона не є до "\ bin" та без крапки з двокрапкою ";" .

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

Як я зрозумів це так:

Додаток працював чудово у Eclipse, оскільки системна бібліотека JRE посилалася на JRE всередині папки JDK замість зовнішньої папки JRE без JDK. [Як дуже добре пояснено в інших відповідях]

Ця конфігурація не застосовується до команди maven, яку ми виконуємо в командному рядку. Він все одно шукатиме змінну JAVA_HOME для доступу до бібліотеки системи JRE, а коли її не знайдено, посилається на зовнішню папку JRE без JDK.


6

Можна вказати кілька варіантів.

Крок: Прямо на проект у провіднику проекту Перейдіть до пункту Виконати-> Запустити конфігурацію -> Клацніть Maven Build -> Клацніть на конфігурацію збірки / або створіть нову конфігурацію. Ви побачите вікно як поданий знімок нижче, натисніть на вкладку 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 з вашого каталогу


5

Для мене JRE був до змінної середовища PATH до шляху JDK

  1. C: \ ProgramData \ Oracle \ Java \ javapath
  2. C: \ env \ jdk1.8.0_151 \ bin

Тому я видалив 1. Напевно, міняючи їх, це теж виправить.


5

Моя відповідь стосується Eclipse у середовищі Windows.

Я перейшов до Налаштування -> Java -> Встановлені JRE-файли Я тут НЕ бачив JDK. Я бачив тут лише JRE. Тому я додав JDK, а потім зняв галочку з JRE. Потім перевірили JDK. Потім я запустив файл POM, використовуючи Запустити конфігурації. Виберіть вкладку 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: \ Програмні файли \ Java \ jdk1.8.0_202 \ bin

  2. C: \ програмні файли \ 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, і тієї ж помилки, про яку повідомлялося тут у всіх моїх складах Maven.


3

Я отримав рішення.

Найпоширенішим рішенням цієї проблеми є зміна місця розташування jdk як моїх встановлених JRE замість місця розташування JRE, але це одночасно не вирішило мою проблему.

Тому я зробив нижче, щоб вирішити проблему. Розгорніть вкладку Встановлені JRE , і ви знайдете середовища виконання вкладку .

Натисніть улюблене середовище виконання. У моєму випадку це був JAVASE-1.8 . Там він показує 2 варіанти. JDK і JRE . Виберіть там JDK і проблема вирішена.

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


2

Я просто витратив 3 години на цю проблему, поки мені не вдалося змусити її працювати. У мене була помилка в терміналі Eclipse при видачі команди компіляції mvn:

У цьому середовищі не передбачений компілятор. Можливо, ви працюєте на 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 і насолоджуйтесь! (принаймні, це я і зробив)

Сподіваючись, це позбавить якогось бідного мандрівника від якоїсь неприємності.


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налаштуванні, але я думаю, що IntelliJтут також може бути корисною відповідь про виправлення цієї помилки та налаштування Windows 10.

1 . Перейдіть до File-> Settings-> Build, Execution, Deployment-> Build Tools-> Maven->Importing

2 . Набір JDKдля , Importerяк показано нижче,JAVA_HOME

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

Також JAVA_HOMEслід встановити JDKшлях до змінних середовища -> системні змінні, а також додати %JAVA_HOME%\binдо змінних Path System


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>


1

Я отримував таку ж помилку, коли створив новий екземпляр EC2 ubuntu 16.04 з уже встановленою на ньому Java, і під час запуску пакету чистого mvn я зіткнувся з цією проблемою, і рішення нижче, яке працювало для мене.

Якщо ви працюєте на сервері Ubuntu, ви можете спробувати встановити Java ще раз, і для цього ви можете використовувати цю відповідь. Як встановити JDK на Ubuntu Linux


1

У Windows 7 - 64 біт є проблема дозволів, яка не дозволяє установщику розпакувати файл C: \ Program Files \ Java \ jdk1.6.xx \ lib \ tools.jar у ваш локальний. Цей jar файл - це те, що використовує maven-компілятор-плагін версії 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) Натисніть Edit, щоб переглянути список банок, включаючи tools.jar, АБО можете додайте його як Додати зовнішній JAR. Потім налаштуйте Maven запустити наступні кроки:

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


0

Окрім відповіді вище, я можу сказати, що просто спробуйте запустити Maven з терміналу (поза Eclipse). Таким чином, якщо вона будується ззовні, але не з Eclipse, ви можете зрозуміти, що проблема повинна бути в Eclipse.


0

Є кілька відповідей на це питання, але всі стосуються конфігурації правильного шляху JDK, але тільки з JRE ми можемо вирішити цю проблему.

Нам просто потрібно скористатися складанням розгортання, щоб налаштувати шлях упакованого файлу війни проекту Java EE, а потім повторно запустити maven-install.

Кроки щодо використання збірки розгортання:

  1. Клацніть правою кнопкою миші на проект Jave EE -> натисніть на Властивості -> натисніть на Збірка розгортання

  2. Натисніть кнопку Додати -> Клацніть на Архів з файлової системи -> Клацніть далі -> Клацніть на Додати -> Перейдіть до каталогу .m2 \ respository та знайдіть створений файл війни -> Виберіть файл війни -> Натисніть кнопку Відкрити -> Натисніть кнопку Застосувати -> ОК

  3. Клацніть правою кнопкою миші на проекті -> Клацніть на Maven Install під Run As

Це створить ваш проект успішно, без помилок компілятора.

Сподіваюся, це вирішує проблему без JDK.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.