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 не может его найти.

  • Gradle не включает зависимости в опубликованном pom.xml
  • Ошибка при развертывании артефакта в Nexus
  • IntelliJ - преобразовать проект / модуль Java в проект / модуль Maven
  • Gradle build.gradle для Maven pom.xml
  • Различия между зависимостью управления и зависимостями в Maven
  • Interesting Posts

    Как указать локальный адрес на java.net.URLConnection?

    Виртуальная папка, объединяющая каталог только для чтения и чтения-записи (дедупликация файлов)

    USB-накопитель загадочно становится защищенным от записи

    Патч Windows 10-UxStyle работает неправильно

    C # версия синхронизированного ключевого слова java?

    C # Linq to SQL: Как выразить «CONVERT ( AS INT)»?

    Загрузите несколько ветвей в один и тот же каталог, используя репо

    Получение текущего рабочего каталога в Java

    Будут ли выполняться запланированные задачи Windows, если компьютер выключен в назначенное время?

    Как получить нить и кучу дампа процесса Java в Windows, который не работает в консоли

    Получить последние 10 строк очень большого текстового файла> 10 ГБ

    Каковы преимущества использования ORM?

    Почему CheckBoxFor создает дополнительный тег ввода и как я могу получить значение с помощью FormCollection?

    Оставляя пробел ячейки в Excel до ввода данных

    Использование sed для вставки содержимого файла

    Давайте будем гением компьютера.