Maven не правильно выбирает JAVA_HOME

Я нахожусь в среде Windows и использую maven для компиляции моего проекта. Хотя я только что создал проект и добавил зависимости для разных libararies.

Когда я добавил их, maven начал жаловаться на отсутствующие tools.jar , поэтому я добавил ниже свой pom.xml :

  com.sun tools 1.6 system ${java.home}/../lib/tools.jar  

Когда я запустил установку maven, я получил ошибку для отсутствующей банки, как показано ниже:

 [ERROR] Failed to execute goal on project GApp: Could not resolve dependencies for project GApp:GApp:war:0.0.1-SNAPSHOT: Could not find artifact com.sun:tools:jar:1.6 at specified path C:\Program Files\Java\jre6\lib\tools.jar -> [Help 1] 

Проблема заключается в том, что tools.jar находится в « C:\Program Files\Java\jdk1.6.0_26\lib » и правильно установлен в переменной среды JAVA_HOME но maven все еще ищет папку jre, как в сообщении об ошибке « C:\Program Files\Java\jre6\lib\tools.jar “.

 C:\>echo %JAVA_HOME% C:\Program Files\Java\jdk1.6.0_26 

Интересно : когда я установил полный путь в зависимости, он работал отлично. Но я не хочу его жестко кодировать.

  com.sun tools 1.6 system C:\Program Files\Java\jdk1.6.0_26\lib\tools.jar  

Может ли кто-нибудь предложить какое-нибудь динамическое решение для этого?

Это ошибка в поддержке Eclipse Maven. Eclipse не поддерживает все глобальные свойства Maven в соответствии с спецификациями Maven .

Согласно спецификациям:

$ {java.home} указывает путь к текущему использованию среды JRE_HOME с относительными путями, чтобы получить, например

По крайней мере, в Eclipse 4.3.1 это не так, здесь java.home всегда указывает на JRE, который использовался для запуска Eclipse , а не для сборки JRE.

Чтобы исправить проблему, вам нужно запустить Eclipse с помощью JRE из JDK, добавив что-то вроде этого в eclipse.ini ( до -vmargs !):

 -vm C://jre/bin/server/jvm.dll 

Вы НИКОГДА не должны использовать зависимости системы. Весь код в tools.jar будет доступен только через запущенную JVM. Вы должны полностью удалить эту зависимость ..

Также, чтобы проверить, какое время работы Maven использует только вызов

 mvn -v 

Если у вас все еще есть зависимость от инструментов jar как проблема, одна из зависимостей, которые вы добавили, имеет эту зависимость (и это действительно плохое качество). Чтобы узнать, какой из них выполняется

 mvn dependency:tree 

или если это не удастся просто удалить одну зависимость за другой, пока проблемы не исчезнут для команды выше.

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

Кажется, ваш JAVA_HOME настроен на указание JRE в затмении.

Свойство Maven $ {java.home} устанавливается и берется из разных мест в зависимости от исполнения Eclipse:

  • от выбранного по умолчанию JRE для рабочей области

    Окно> Настройки> Java> Установленные JRE

  • от конкретного проекта Eclipse,

    Путь сборки Java> Библиотеки> Библиотека JRE

  • из конфигурации «Запуск».

    Run Configurations> Конкретная конфигурация запуска> JRE

Помните, что ваши домашние дорожки JRE указывают на JDK или JRE под JDK

Похоже, вы используете Maven в Eclipse. Eclipse не обращается к JAVA_HOME.

Убедитесь, что вы установили JRE в настройках Eclipse в желаемый JDK.

Когда вы добавляете переменную среды JAVA_HOME, если в пути есть пробелы, вы должны обернуть все это в кавычки.

Возможно, вы используете неправильную установку Maven. Переключитесь в окно> Настройки> Maven> Установки. У меня была установка на установку Fedora Maven; изменив его на значение по умолчанию (версия, встроенная в m2e), устранила проблему для меня.

Я подозреваю, что причиной этой проблемы является то, что установка Fedora Maven использовала OpenJDK от Fedora, что, вероятно, ставит tools.jar в странное место (все о OpenJDK от Fedora странно и нестандартно), поэтому Maven не может его найти.

  • Maven - Зависит от собранного почтового индекса
  • Как указать версию компилятора Java в файле pom.xml?
  • Maven: Что такое pluginManagement?
  • отказоустойчивый плагин не будет работать в одном проекте, но будет работать на другом - почему?
  • Различия между зависимостью управления и зависимостями в Maven
  • Давайте будем гением компьютера.