Не вдалося побудувати 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 , WindowPreferences ...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.