Ошибка сборки maven: невозможно найти компилятор Javac в: jre или jdk issue

У меня установлен 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?

Ответ 1

Вы можете попробовать обновить 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.

Ответ 2

eclipse.ini нуждается в аргументе vm, чтобы указать на ваше местоположение jdk.

Отредактируйте файл eclipse.ini, чтобы указать на ваш дом jdk, что-то вроде:

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

Это гарантирует, что Eclipse будет работать от JDK, а не по умолчанию JRE на вашем компьютере.

Ответ 3

Вы пытаетесь:

Перейдите к 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 имеет смысл только в том случае, если первая часть (til the/..) заменяется на C:\Program Files\Java\jdk1.6.0_27\jre.

Ответ 4

Настройка вилки в true разрешила проблему для меня.

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

Большое спасибо, Сэм Ян.. ты сделал мой день

Ответ 5

У меня была ТОЧНАЯ такая же проблема! Был поиск и поиск в течение нескольких дней, потому что все болтовня о "помещала -vm c:\program files\java\jdkxxxxx\bin" в ini ar как аргумент для короткого курсора НЕ НА ВСЕХ heklp! (Мне кажется, что я разочарован? Поверьте мне, это преуменьшение! Я просто в ярости, потому что я потерял неделю, пытаясь сделать Maven надежным!)

У меня было очень непредсказуемое поведение. Иногда он составлялся, иногда нет. Если я сделал maven clean, он не смог найти компилятор и не смог. Если я потом что-то изменил в пути сборки, он снова сработает!!

Пока я не пошел в окно → настройки → java → установил JRE. Я добавил новую JRE, используя расположение JDK, а затем удалил JRE. Внезапно maven побежал стабильно!

Возможно, это стоит положить буквы с размером шрифта 30 или около того в руководстве apache? При всем уважении это просто возмутительно для сообщества java! Я не могу себе представить, сколько дней было потеряно всеми этими людьми, пытаясь решить их проблемы такого рода! Я не могу представить, что это выпущено как окончательная версия. Я лично даже не осмелился бы выпускать такую ​​вещь под названием BETA software...

С наилучшими пожеланиями в любом случае.... После недели фальсификации я могу наконец начать развиваться. Надеюсь, мой босс не узнает об этом. Мне потребовалось много усилий, чтобы убедить его НЕ идти в .NET, и я уже сожалею об этом.

Ответ 6

У меня возникла такая же проблема, используя Run as → Maven install в Eclipse. JAVA_HOME и eclipse.ini были в порядке и указали на мой последний JDK. Но m2clipse использовал JRE. Использование mvn-установки за пределами Eclipse отлично работало! В моем случае я решил проблему следующим образом: 1. Перейдите в Eclipse: Окно → Настройки → Java → Установленные JREs 2. Были две неактивные записи для JRE и JDK. Активным был последний установленный JDK. Удалите все записи, но один maven должен использовать.

Я думаю, что maven не учитывает, какой из них активен...

Ответ 7

Я только что установил 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.

Ответ 8

Похоже, что Maven использует JRE, а не JDK. Возможно, вы установили Maven перед установкой JDK?

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

Ответ 10

Я решил проблему, изменив местоположение Установленной 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, и я получал ту же ошибку в случае Maven (Ant работал нормально).

Изменив установленную JRE на C:\Program Files\Java\jdk1.7.0_03\jre7 как установленную JRE в Eclipse, проблема решена.

Ответ 11

Только настройка Eclipse

Выполните следующие действия:

  • Щелкните правой кнопкой мыши по проекту проекта Eclipse

  • Путь сборки Java → Библиотеки

  • Выберите Системную библиотеку JRE → Нажмите кнопку "Изменить"

  • Нажмите кнопку "Установленные JREs..."

  • Изменить JRE как: Установить JRE Home = JAVA_HOME или JAVA_HOME\jre

ScreentShot:

enter image description here

Большое спасибо,

Партха

Ответ 12

Щелкните правой кнопкой мыши Project → Properties → Java Build Path. Выберите системный путь JRE → Изменить. Выберите рабочую область по умолчанию JRE и укажите ее в JDK > 1.4

Ответ 13

Window -> Preferences -> Java -> installed JREs -> Execution Enviroments -> click the checkbox on the right side

Ответ 14

Решение прост, несколько раз окна eclipse → preference → java → Установленные JRE, указывающие на C:\Program files\Java\jre, когда я изменил его на C:\Program files\Java\JDK 6.0\jre, он работает на 100%.

Ответ 15

Как уже упоминалось несколькими другими, Eclipse Window->Preferences...->Java->Installed JREs должен указывать на установленный JDK, а не на JRE. Только тогда он может найти папку ../lib, указанную в сообщении об ошибке.

Даже при этом проблема может повторяться. Мой выход в Eclipse (Juno) - это сделать Maven -> Update project..., после которого проблема исчезнет.

Я подозреваю, что причина в том, что некоторые из сгенерированных файлов Eclipse (.classpath,.project,.preferences) находятся в подрывной деятельности для проекта, в котором у меня возникают эти проблемы. Таким образом, обновление svn представляет проблему, и обновление конфигурации из maven в Eclipse снова разрешает его.

Реальное решение: опустить Eclipse сгенерированные файлы из управления версиями и разрешить конфигурацию проекта maven eclipse. (дополнительные указатели/предложения приветствуются).

Ответ 16

Не забывайте, что если вы запускаете проект из определенной конфигурации Eclipse, вы должны изменить Java Runtime в "Run Configurations" → "Конфигурация вашего maven" → "вкладка JRE" после добавления правой JDK к вашим предпочтениям Eclipse.

Ответ 17

В моем случае, в eclipse Run-> Debug Configurations На вкладке jre выбранный jdk вместо jre решил проблему.

Ответ 18

Перейдите в Окно Eclipse- > Настройки...- > Java- > Установленные JRE должны указывать на установленный JDK, а не на JRE.

Ответ 19

Я бы предположил, что местоположение компилятора определено в pom для того, чтобы плагин компилятора находился в отображаемом местоположении jre, а не в местоположении jdk, на котором указывает JAVA_HOME.

Ответ 20

Вам нужно указать JAVA_HOME в mvn.ini (он находится в папке maven /bin), и ваша проблема исчезнет.

Ответ 21

Если вы установили JAVA_HOME, и проблема не исчезнет, ​​попробуйте следующее. (у меня была та же проблема, на новом установленном ПК.)

Предполагая, что вы используете Eclipse.

  • Открыть окно - настройки - java - установлен jre's удалите все, что у вас есть, добавьте желаемое, которое вы хотите использовать (JDK, нет JRE!)
  • В том же окне откройте maven - установки, добавьте установку mave, которую вы загрузили и извлекли где-нибудь. (НЕ ИСПОЛЬЗУЙТЕ встроенную установку maven, у нее есть некоторые известные ошибки).

Вот и все. ваш проект не будет страдать от проблем с ловом. Надежда помогает.

Ответ 22

Вы также можете убедиться, что Eclipse имеет все обновленные изменения. Для этого щелкните правой кнопкой мыши ваш проект, а затем нажмите пункт меню "Обновить".

Ответ 23

Многие другие ответы говорят вам указать ваше Eclipse на JDK вместо JRE.

Вот еще один ответ с более конкретным/понятным [чем я видел в любом ответе здесь] шаг за шагом о том, как это сделать: Как вы устанавливаете JDK?

Вот зачем я решил эту проблему.

Ответ 24

Убедитесь, что "-vm" в вашем eclipse.ini находится на двух отрывных строках, то есть:

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

Ответ 25

У меня была такая же ошибка, из-за версии 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>

Ответ 26

Я изменил конфигурацию maven-compiler-plugin, чтобы добавить исполняемый файл и 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>

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

Ответ 27

do Echo %JAVA_HOME%
то mvn --version

JRE путь должен быть таким же.... then go Window -> preferences - java - installed jre's
местоположение должно быть таким же, как показано Java_Home.

Ответ 28

У меня была такая же проблема на Amazon Linux. Оказывается, мне нужно было установить версию jdk:

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

Ответ 29

Перейдите в меню "Свойства", щелкнув правой кнопкой мыши по проекту.

В LINKED RESOURCES добавьте новый путь под названием JAVA_HOME и разместите ваше местоположение jdk, что-то вроде "C:\Program Files\Java\jdk1.8.0_73"

Что все!!

Ответ 30

Решение этой проблемы очень просто....

Если у вас нет файла ANT, создайте его. В eclipse вы можете легко создать файл ANT.

Обратитесь к ссылке, чтобы создать файл сборки 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 Сборка ".

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

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

5) вы увидите 3 переключателя, и в качестве опции будут выбраны JRE или JDK.

6) Посмотрите внимательно, если параметры переключателя имеют JRE, а затем измените его на JDK.

7) Нажмите "Применить".

Что это...!!!