Не вдалося побудувати Maven: "Неможливо знайти компілятор Javac у: jre або jdk"


112

У мене в JAVA_HOME встановлено:

C:\Program Files (x86)\Java\jdk1.6.0_18

Після запуску maven installя отримую це повідомлення від Eclipse :

Причина:

Unable to locate the Javac Compiler in:
  C:\Program Files (x86)\Java\jre6\..\lib\tools.jar
Please ensure you are using JDK 1.4 or above and
not a JRE (the com.sun.tools.javac.Main class is required).
In most cases you can change the location of your Java
installation by setting the JAVA_HOME environment variable.

Я впевнений, що це складна частина

Переконайтесь, що ви використовуєте JDK 1.4 або вище, а не JRE

Коли я запускаю конфігурацію, вона встановлюється на JRE6. Як змінити його на JDK 1.6, який я вже встановив?

Я навіть намагався змінити плагін:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.0.2</version>
    <configuration>
        <source>1.6</source>
        <target>1.6</target>
        <executable>C:\Program Files (x86)\Java\jdk1.6.0_18\bin</executable>
    </configuration>
</plugin>

Все-таки я отримую ту ж помилку.

Я використовую плагін Eclipse Maven. Як я можу перейти від JRE до JDK у Eclipse?


Ви двічі перевірили за допомогою команди командного рядка, setщоб переконатися, що JAVA_HOME встановлений таким, яким ви вважаєте, що це?
— Powerlord

Я використовую Java на щоденній основі .. все працює відмінно тут: java -version .6.0_18-ea" time Environment (build 1.6.0_18-ea-b04) ) Client VM (build 16.0-b11, mixed mode, sharing)
— Гендальф Stormcrow

1
Установіть <fork> true </fork> під час встановлення виконуваного файлу.
— Робін

Це насправді не говорить нам про те, яка установка Java java -versionпрацює; це може бути встановлення JRE або JDK. javac -versionбуло б трохи корисніше. Однак, навіть якщо PATH правильний, а JAVA_HOME помиляється, вони все одно показуватимуть, як ви очікували.
— Powerlord

1
Також виконуваним файлом має бути ... \ bin \ javac, ви повинні вказати фактичний виконуваний файл, а не лише шлях.
— Робін

Відповіді:


141

Ви можете спробувати оновити використовуваний JDK Eclipse таким чином:

Додайте та встановіть JRE у меню Вікно → Налаштування ... → Java → Встановлені JRE :

JRE type: Standard VM JRE
Name: jdk1.6.0_18
JRE home directory: C:\Program Files (x86)\Java\jdk1.6.0_18

Якщо це не так, можливо, дужки та пробіли на шляху JAVA_HOME викликають проблеми. Спробуйте скопіювати JDK в інше місце та оновити JAVA_HOME.


1
Це справді перша частина вашого запитання, JAVA_HOME справа в порядку
— Gandalf StormCrow

47
Для мене був потрібен додатковий крок: перейшовши до властивостей вказаного проекту-> шлях збірки Java -> бібліотеки-> виберіть "Бібліотека системи JRE", натисніть "Змінити" та виберіть "JRE для робочої області за замовчуванням"
— maayank

1
мені було недостатньо, довелося редагувати eclipse.ini. Я вважаю, що є помилка.
— ruhsuzbaykus

Це працювало для мене лише тоді, коли я перевіряв відповідний jdk у середовищі виконання -> сумісні JRE.
— Ведран

9
Крім того, якщо ви запускаєте Maven із конфігурації запуску затемнення, створеної до зміни цих конфігурацій, пам’ятайте, що перейдіть до запуску вікна конфігурації / вкладки JRE та виберіть правильний JRE. Інакше ви можете використовувати старий неправильний JRE навіть після оновлення параметрів затемнення та проекту до нового.
— Діана

20

Файлу eclipse.ini потрібен vmаргумент, щоб вказати на ваше місцезнаходження JDK.

Відредагуйте eclipse.iniфайл, щоб вказати на ваш дім в JDK, приблизно так:

-vm
C:\Program Files\Java\jdk1.6.0_06

Це гарантує, що в Eclipse буде запущено JDK, а не будь-який JRE за замовчуванням на вашій машині.


5
Це вирішило мою проблему. З дослідження в Інтернеті, схоже, що Maven використовує JAVA_HOME, але плагін Maven нічого не знає про JAVA_HOME, а натомість за замовчуванням VM, що використовується для запуску Eclipse.
— jnosek

13

Ти спробуй:

Перейдіть Preferences/Java/Installed JREsі додайте його для місцезнаходження "C:\Program Files\Java\jdk1.6.0_27\jreчи чогось подібного.

Видаліть одну для C:\Program Files\Java\jre6

Як бачите, шлях C:\Program Files\Java\jre6\..\lib\tools.jarмає сенс лише в тому випадку, якщо першу частину (до / ..) замінити на C:\Program Files\Java\jdk1.6.0_27\jre.


10

Встановлення fork to true вирішило проблему для мене.

<configuration>
    <fork>true</fork>
    <source>1.6</source>
    <target>1.6</target>
</configuration>

9

У мене була точно така ж проблема! Я шукав і шукав цілими днями, оскільки вся лайка про "помістити -vm c: \ програмні файли \ java \ jdkxxxxx \ bin" в іні ар як аргумент для ярлика зовсім не допомогла !

(Чи звучать я розчаровано? Повірте, це заниження! Я просто лютий, бо втратив тиждень, намагаючись зробити Мевена надійним!)

У мене була дуже непередбачувана поведінка. Іноді вона складена, а іноді ні. Якщо я зробив це maven clean, він не міг знайти компілятор і не вдався. Якщо я потім щось змінив на шляху побудови, воно раптом знову спрацювало !!

Поки я не перейшов у меню Вікно → Налаштування → Java → Встановлені JRE . Я додав новий JRE, використовуючи розташування JDK, а потім видалив JRE. Раптом Мейвен побіг стабільно!

Можливо, це варто вводити літерами розміром шрифту 30 або близько того у посібнику Apache?

При всій повазі, це просто кричуще для спільноти Java! Я не уявляю, скільки днів втратили всі ці люди, намагаючись вирішити свої проблеми такого роду! Я не можу уявити, що це випущено як остаточну версію. Я особисто навіть не наважувався б випустити таке під назвою бета- програмне забезпечення ...

З повагою будь-який спосіб .... Після тижня фальсифікацій я нарешті можу почати розвиватися. Я сподіваюся, що мій начальник не дізнається про це. Мені знадобилося чимало зусиль, щоб переконати його не відвідувати .NET, і я вже шкодую про це.


1
підсумок, використовуйте його з консолі, а не від затемнення, у вас не виникне подібних проблем, це те, що я зрозумів після кількох місяців користування ним, тепер досить зручно з Maven
— Gandalf StormCrow

Це більше проблеми із затемненням ... m2e .. У мене така ж проблема, і інші IDE (netbeans та IDEA) прекрасно працюють.
— Джошуа

3

У мене виникла така ж проблема за допомогою Run як -> Maven install in Eclipse. JAVA_HOME і eclipse.ini були в порядку і вказували на мій останній JDK. Але m2clipse використовується JRE. Використання mvn установки поза Eclipse працювало чудово!

У моєму випадку я вирішив проблему так:

  1. Перейдіть по Eclipse: вікно меню → налаштування → Java → встановлені JRE
  2. Для JRE та JDK було дві неактивні записи. Активним був останній встановлений JDK. Видаліть усі записи, але той, який повинен використовувати Maven.

Я думаю, що Мейвен не враховує, який з них активний ...



3

Я тільки що встановив Maven 3.0.4, встановити M2_HOME, M2і JAVA_HOMEвідповідно. Потім я запустив такі команди:

mvn archetype:generate....

mvn compile

Я отримав повідомлення не вдався , такі як: maven unable to locate javac compiler.

На моєму комп’ютері у мене за замовчуванням встановлено JRE на C: \ program files \ java \ jre.1.6 . І я маю інший C: \ java \ jdk1.6 і JAVA_HOMEвстановив цей C: \ java \ jdk1.6 .

Я не бачив нічого поганого в моїх налаштуваннях. Після пошуку я вирішив переглянути mvn.bat, я повторював %JAVA_HOME%кожен крок, і він відображався правильно як C:\java\jdk1.6, але коли я запускаю команду mvn --version, вона відображає Java home: C: \ program files \ java \ jre1.1.6 .

Нарешті я з’ясував, що мені просто потрібно встановити, -Djava.home=c:\java\jdk1.6як у команді нижче, і зараз добре працювати:

%MAVEN_JAVA_EXE% %MAVEN_OPTS% -classpath %CLASSWORLDS_JAR% "-Dclassworlds.conf=%M2_HOME%\bin\m2.conf" "-Djava.home=%JAVA_HOME%" "-Dmaven.home=%M2_HOME%" %CLASSWORLDS_LAUNCHER% %MAVEN_CMD_LINE_ARGS%

Примітка. Це вказується mvnв командному рядку, а не в Eclipse.


Гей, вам не потрібно йти і завжди пояснювати кожен зроблений вами крок. Будь ласка, дивіться, як відповісти на питання .
— mtk

Це здається хаком (але ей ... якщо це працює для вас!), Але цікаво, що командний рядок Maven підбирає неправильний дім Java - це наше поточне питання.
— плазма147

2

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

У моєму випадку є два каталоги

  • C:\Program Files\Java\jdk1.7.0_03 --> For JDK

  • C:\Program Files\Java\jre7 --> For JRE

Спочатку я встановив C:\Program Files\Java\jre7як встановлений JRE в Eclipse, і я отримував таку ж помилку у випадку з Мейвен (Ant працював нормально).

Змінивши встановлений JRE на C:\Program Files\Java\jdk1.7.0_03\jre7встановлений JRE в Eclipse, проблема вирішується.


2

Не забувайте, що якщо ви запускаєте проект із певної конфігурації Eclipse, вам слід змінити час виконання Java в розділі "Запустити конфігурації" -> "Ваша конфігурація maven" -> "вкладка JRE", після чого ви додасте потрібний JDK до ваші налаштування Eclipse.


2

Здається, Maven використовує JRE, а не JDK. Можливо, ви встановили Maven перед встановленням JDK?

Перевірте файли налаштувань . Всього їх три: система, користувач та проект. Це, швидше за все, в конфігурації установки ($ M2_HOME / conf / settings.xml) або, можливо, конфігурації для кожного користувача ($ {user.dir} /. M2 / settings.xml).


2

Тільки налаштування затемнення

Виконайте наступні дії:

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

  2. Шлях до збірки Java → Бібліотеки

  3. Виберіть системну бібліотеку JRE → натисніть Editкнопку

  4. Натисніть кнопку "Встановлені JRE ..."

  5. Редагуйте JRE як: Встановіть JRE Home = JAVA_HOME або JAVA_HOME \ jre

Знімок екрана:

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


Це працювало для мене, дякую. Я змінив домашню JRE в папку JDK.
— LadyBernkastel

1

Клацніть правою кнопкою миші меню Проект → Властивості → Шлях збірки Java .

Виберіть системний шлях JRE → Редагувати . Виберіть робочу область за замовчуванням JRE та вкажіть його на JDK> 1.4.


1

Використовуйте меню Вікно → Налаштування → Java → Встановлені JRE → Середовища виконання -> натисніть прапорець праворуч.


1

Рішення просте. Іноді Windows Eclipse → Налаштування → Java → Встановлені JRE, що вказують на C:\Program files\Java\jre.

Коли я змінив його, C:\Program files\Java\JDK 6.0\jreвін працює на 100%.


1

Як уже згадувалося декількома іншими, Eclipse , Window → Preferences ... → Java → Поле Installed JREs повинен вказувати на JDK встановлений, НЕ в JRE. Тільки тоді він може знайти своє../lib папку, згадану у повідомленні про помилку.

Навіть при цьому проблема може повторитися. Мій вихід у Eclipse v4.2 (Juno) - це зробити меню Maven → Оновити проект ..., після чого проблема зникає.

Я підозрюю, що причина полягає в тому, що деякі файли, створені Eclipse (.classpath, .project, .preferences) знаходяться в Subversion для проекту, в якому у мене виникають ці проблеми. Таким чином, оновлення SVN вводить проблему, а оновлення конфігурації від Maven in Eclipse вирішує її знову.

Справжнє рішення: опустити згенеровані файли Eclipse з управління версіями , і нехай плагін Maven Eclipse керує конфігурацією проекту. (Додаткові вказівки / пропозиції вітаються) .


1

У моєму випадку в меню Eclipse Виконати → Конфігурації налагодження .

На вкладці JRE вибір проблеми JDK замість JRE вирішив проблему.


1

У мене була така сама проблема в Amazon Linux. Виявляється, мені довелося встановити версію JDK для розробників:

sudo yum -y install java-1.7.0-openjdk-devel

1

Перейдіть у вікно меню Eclipse → Налаштування ... → Java → Встановлені JRE повинні вказувати на встановлений JDK, а не на JRE.


Але це також у численних попередніх відповідях.
— Пітер Мортенсен

0

Ви також можете переконатися, що Eclipse має всі оновлені зміни. Для цього клацніть правою кнопкою миші проект і натисніть пункт меню «Оновити».


0

Багато інших відповідей говорять вам, щоб навести Eclipse на JDK замість JRE.

Ось ще одна відповідь з більш конкретною / чіткою [ніж я бачив у будь-якій відповіді тут] покрокові кроки щодо того, як це зробити: Як встановити JDK?

Саме це вирішило мене для цієї самої проблеми.


0

Переконайтеся, що "-vm" у вашому eclipse.ini є двома прямими лініями, тобто:

-vm
C:\Program Files\Java\jdk1.6.0_06

0

Я б здогадався, що місце розташування компілятора визначено в POM для того, щоб плагін компілятора знаходився у відображеному місці JRE, замість JDK-місця, на яке ви вказуєте JAVA_HOME.


@Robin Де саме я повинен це шукати? пом. мені добре виглядає<groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.0.2</version> <configuration> <source>1.6</source> <target>1.6</target>
— Гендальф StormCrow

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

Визначаючи виконуваний файл, ви також повинні встановити <fork> на true.
— Робін

0

Вам потрібно вказати JAVA_HOMEв mvn.ini(це в папці Maven /bin), і ваша проблема зникне.


0

Якщо ви встановите JAVA_HOME, і проблема не зникає, спробуйте виконати наступне.

(У мене була така ж проблема на новому встановленому ПК.)

Якщо припустити, що ви використовуєте Eclipse.

  • Відкрийте вікно → Налаштування → Java → Встановлено jre . Видаліть усе, що у вас є, додайте потрібне, яке ви хочете використовувати (JDK, немає JRE!)
  • У цьому ж вікні відкрийте Maven - інсталяції, додайте інсталяцію Maven, яку ви десь завантажили та витягли. ( Не використовуйте вбудовану установку Maven. У ній є деякі відомі помилки.)

Це все. Ваш проект не буде страждати від таких проблем.


0

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

Тож рішення таке:

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

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

0

Я змінив конфігурацію maven-компілятора-плагіна на додавання executableі forkзі значенням true.

<configuration>
    <fork>true</fork>
    <source>1.6</source>
    <target>1.6</target>
    <executable>C:\Program Files\Java\jdk1.6.0_18\bin\javac</executable>
</configuration>

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


0

Зробіть Echo %JAVA_HOME%і тодіmvn --version .

Шлях JRE повинен бути однаковим ... потім перейдіть до меню Вікно → Налаштування → Java → Встановлене розташування JRE повинно бути таким же, як Java_Homeпоказано.


0

Перейдіть у діалогове вікно Властивості та клацніть правою кнопкою миші на проекті.

У Пов'язані ресурси додайте новий шлях під назвою JAVA_HOME та поставте у своє JDK місцеположення щось на зразок "C: \ Program Files \ Java \ jdk1.8.0_73".

Це все!!


Я не думаю, що вам слід додавати будь-яку змінну .. просто змініть конфігурацію JDK у розділі Запустити seetings до робочої області JDK
— Phani

0

Рішення цієї проблеми дуже просте ...

Якщо у вас немає файлу збірки Ant, то генеруйте його. У програмі Eclipse ви можете легко створити файл мурашника .

Перейдіть за посиланням, щоб створити файл збірки Ant [ http://www.codejava.net/ides/eclipse/how-to-create-ant-build-file-for-existing-java-project-in-eclipse] .

Тепер виконайте вказані кроки:

1) Додайте свій Ant файл збірки в Ant зору , яка знаходиться у вікні перегляду.

2) клацніть правою кнопкою миші на файлі збірки Ant і виберіть « Запустити як» та другий варіант у цьому «Ant Build».

3) Тепер відкриється діалогове вікно з різними параметрами та вкладками.

4) Виберіть вкладку JRE .

5) Ви побачите три перемикачі, і вони матимуть опцію JRE або JDK.

6) Уважно подивіться, чи для параметрів перемикача вибрано JRE, а потім змініть його на JDK .

7) Клацніть застосувати.

Це воно...!!!

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