Maven не може знайти компілятор Javac у:


76

Коли я намагаюся створити військовий файл, він показує деяку помилку, подібну

[ERROR] Unable to locate the Javac Compiler in:
[ERROR] C:\Program Files\Java\jre7\..\lib\tools.jar

Коли я echo %path%це роблю, це показує

 C:\Windows\System32;D:\name\name1\Softwares\Maven\apache-maven-3.0.4\b
in;C:\Program Files\Notepad++\;%JDK_HOME%

Коли я це роблю echo %JDK_HOME%

D:\name\name\core java\software\Java\Java_1.6.0_04_win\jdk1.6.0_04\bin

Я не знаю, чому maven звертається до jre, коли моя екологічна змінна jdk. Я також змінюю встановлений JRE на jdk1.6.


3
JDK_HOME повинен бути базовим каталогом, тобто без, \binі ви повинні мати %JDK_HOME%\binна своєму шляху. Ти вмієш бігати D:\name\name\core java\software\Java\Java_1.6.0_04_win\jdk1.6.0_04\bin\java -version?
Пітер Лорі

3
Maven очікує, що JAVA_HOMEдля вас буде встановлено ваш каталог встановлення JDK, а не JDK_HOME. Див. Інструкції з встановлення Maven .
Jesper

Відповіді:


152

Це лише в налаштуваннях Eclipse

Він має 4 кроки TODO.

Крок 1: Клацніть правою кнопкою миші на Властивості проекту Eclipse

Крок 2: Шлях побудови Java -> Бібліотеки

Крок 3: Виберіть системну бібліотеку JRE -> натисніть кнопку Редагувати -> натисніть кнопку Встановлені JRE ...

Крок 4: Редагуйте JRE як Встановити JRE Home = JAVA_HOME

ScreentShot:

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


2
я отримав ту ж проблему, і я зробив, як ви показали тут ... і тепер вона працює нормально ,,, але мені цікаво, як дотепер вона працювала нормально без цієї зміни (налаштування Java додому для jre). мій проект працював нормально до цього часу, але раптом я отримав цю помилку, коли запустив свій проект в eclipse.
передує

@Preeth: Зрештою, ваше затемнення могло нанести карту JDK. якщо ви видалили JDK або оновили, ви отримали цю проблему
Parthasarathy B

1
Eclipse часто посилається на JRE поза JDK. Вам слід змінити шлях до JDK / jre. Це працює для мене.
emeraldhieu

35

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

Редагувати JRE Home = JAVA_HOME або JAVA_HOME \ jre

Наприклад, якщо ви використовуєте jdk1.6.0_04, який інстальовано в C: \ Program Files, виконайте такі зміни:

C: \ Program Files \ Java \ jdk1.6.0_04 \ jre або C: \ Program Files \ Java \ jdk1.6.0_04 замість типового, який знаходиться в C: \ Program Files \ Java \ jre7


1
Це працює, якщо ви використовуєте eclipse (працює як maven build ..) Але ця помилка була вирішена шляхом встановлення змінної середовища java_home. У будь-якому випадку, дякую за вашу відповідь, сер, це спрацювало для мене на затемнення.
porfiriopartida

Це спрацювало для мене, але нічого собі - ТАК дратує після встановлення кожного можливого JAVA_HOME, JDK_HOME, JRE_HOME тощо до мого розташування jdk (або jdk / jre).
RockMeetHardplace

5

Була та сама проблема, але в моєму випадку затьмарення каталогу вказало, що JRE є JDK. Отже, я шукав цей tools.jar і був там.

я зробила

  • Шлях побудови Java >> Бібліотеки
  • Бібліотека системи JRE >> Редагувати
  • Встановлені JRE >> натисніть на мою jdk >> редагувати
  • Додайте зовнішні банки >> tools.jar

А потім склав штраф


3

Змінна JDK_HOME завжди повинна вказувати на базову директорію jdk, а не на директорію bin:

D:\name\name\core java\software\Java\Java_1.6.0_04_win\jdk1.6.0_04

Це визначено, виправте свій шлях

C:\Windows\System32;D:\name\name1\Softwares\Maven\apache-maven-3.0.4\bin;C:\Program Files\Notepad++\;%JDK_HOME%\bin

3

Це була проблема Eclipse. Коли я намагався побудувати його з командного рядка за допомогою

mvn package

це спрацювало нормально.


2

Здається, ви JDK_HOMEвизначили як змінну користувача та PATHвизначили як системну змінну, або навпаки - echo %PATH%не повинні містити невирішених змінних типу ...;%JDK_HOME%.

Переконайтеся, що %JDK_HOME%\binшлях у вашій змінній PATH є невирішеним, навіть якщо вам доведеться вказати шлях явно.


2

У мене була та сама помилка, через версію JUNIT у мене було 3 3.8.1 і я змінився на 4.8.1.

отже рішення є

вам потрібно перейти до POM і переконатися, що ваша залежність виглядає так

 <dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.8.1</version>
  <scope>test</scope>
</dependency>

2

Для інших, хто стикається з цією проблемою в Eclipse, навіть якщо шлях встановлений правильно в JDK, вам потрібно видалити інші JRE з встановлених JRE.

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

Виберіть невикористані JRE окремо та Видаліть

У мене це спрацювало.


1

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

Наступні кроки змусили проект скластися успішно:

У провіднику проектів клацніть правою кнопкою миші на проекті, виберіть «властивості» У дереві праворуч перейдіть до шляху побудови Java. Виберіть вкладку “бібліотеки”. Клацніть «Додати бібліотеку». Виберіть системну бібліотеку JRE. Клацніть далі. Виберіть перемикач Alternate JRE. Клацніть на “встановлені JRE”. Виберіть JRE з потрібною версією. Натисніть Appy і закрийте. На наступному екрані натисніть кнопку Готово. У вікні властивостей натисніть Застосувати та закрийте. У провіднику проекту клацніть правою кнопкою миші файл pom.xml і виберіть запустити як> maven build У текстовому полі цілі напишіть “install”. Клацніть Виконати.

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


0

В Eclipse такі дії, як імпорт проектів Maven або виклик "Оновлення джерел", виконуються в тій самій JVM, в якій запущено Eclipse. Якщо цей JVM походить від JRE, який не є частиною JDK, не було б компілятора Java (tools.jar).

Отже, щоб запустити Maven з Eclipse, JRE, який використовується для запуску, також повинен надходити з JDK. За замовчуванням Eclipse реєструє JRE, в якому він запущений, але це можна налаштувати на сторінці налаштувань "Вікно / Налаштування ... / Java / Встановлені JRE", як зазначено вище Parthasarathy

Крім того, ви можете вказати compilerId у pom.xml, тому Maven не буде шукати JDK під час компіляції коду Java:

 <plugin>
  <artifactid>maven-compiler-plugin</artifactid>
  <configuration>
    <compilerid>eclipse</compilerid>
  </configuration>
  <dependencies>
    <dependency>
      <groupid>org.codehaus.plexus</groupid>
      <artifactid>plexus-compiler-eclipse</artifactid>
      <version>xxxx</version>
    </dependency>
  </dependencies>
</plugin>

0

Я зіткнувся з подібною проблемою, і оскільки ніхто не публікував підхід, подібний до мого, ось і я.

Перейдіть до конфігурації запуску, яку ви хотіли запустити.
Там обрали вкладку JRE. Налаштуйте там "Runtime JRE", і ви готові до роботи.


0

Я можу вирішити це, виконавши такі дії:

Клацніть правою кнопкою миші на проекті виберіть Путь збірки -> Налаштувати шлях збірки -> виберіть вкладку Бібліотеки -> потім виберіть Системну бібліотеку JRE [версія, яку ви маєте для мене JavaSE-1.7] -> натисніть кнопку Редагувати -> У вікні Системної бібліотеки JRE виберіть середовище виконання - У спадному меню ви можете вибрати JDK, перерахований для мене, його JavaSE-1.7 -> поруч із цим клацніть на кнопку Середовища -> У вікні середовищ виконання вам доведеться знову вибрати свій java SE для мене його JavaSE-1.7 -> просто виберіть його , у вас будуть опції на вкладці Сумісні JRE, тому виберіть JDK, який ви хочете мати в моєму випадку, це jdk1.7.0_25.


Клацніть "ОК" і закінчте інші вікна, виконавши відповідні дії "ОК" / "Готово".

Нарешті, виконайте Maven Clean та Maven Install.


Ця відповідь була б кращою, якби там було вказано, яку програму ви використовуєте. :)
JakeRobb

0

Це залежить від версії Maven. Коли ви встановите новішу версію Maven, ця помилка не з'явиться. Ви також можете додати інший каталог із файлом tools.jar lib / tools.jar - це також вирішить цю проблему.


0

Якщо ви виконуєте всі вищезазначені кроки, які можуть бути плутаними, а в нашій проблемі просто бракує tools.jre, то просто додайте tools.jre, виконавши наступні кроки, і проблема вирішена.

Крок 1: У eclipse перейдіть до Windows -> налаштування

Крок 2: Java -> Встановлені JRE (двічі клацніть на ньому)

Крок 3: Натисніть кнопку Редагувати -> Натисніть Додати зовнішні JAR-файли

Крок 4: Тепер виберіть шлях до tools.jar

тепер застосовуйте зміни, і це працює нормально.

Ось знімок екрана


0

Хоча на це питання є декілька відповідей, не пов’язаних із Eclipse, в яких не згадується Eclipse, вони вимагають змін змінних шляху. Альтернативою є використання опції командного рядка java.home, наприклад:

mvn package -Djava.home="C:\Program Files\Java\jdk1.8.0_161\jre"

Зверніть увагу на \ jre в кінці - дивовижна необхідність.


0

Жодна з поточних відповідей мені тут не допомогла. Ми отримували щось на зразок:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:
    #.#.#:compile (default-compile) on project Streaming_Test: Compilation failure
[ERROR] Unable to locate the Javac Compiler in:
[ERROR] /opt/java/J7.0/../lib/tools.jar

Це відбувається тому, що інсталяція Java визначила, що це інсталяція JRE. Він очікує, що над підкаталогом JRE будуть речі JDK , отже, ../libшлях. Наші tools.jarв $JAVA_HOME/lib/tools.jarНЕ$JAVA_HOME/../lib/tools.jar .

На жаль, ми не маємо можливості встановити JDK на нашу ОС (не питайте), тому це не було варіантом. Я вирішив проблему, додавши до maven наступне pom.xml:

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
      <fork>true</fork>  <!-- not sure if this is also needed -->
      <executable>${JAVA_HOME}/bin/javac</executable>
      <!--        ^^^^^^^^^^^^^^^^^^^^^^ -->
    </configuration>
  </plugin>

Вказавши виконуваний файл у потрібне місце, це принаймні обійшло наші помилки компіляції.


-1

Для Intellij Idea встановіть все належним чином (подібно до цього):

JAVA_HOME = C:\Program Files\Java\jdk1.8.0_60
JRE_HOME = JAVA_HOME\jre

і не забудьте перезапустити Idea . Ця програма підбирає змінні під час запуску, тому будь-які зміни змінних середовища під час роботи програми не матимуть жодного ефекту.

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