Maven не правильно выбирает JAVA_HOME
Я нахожусь в среде Windows и использую maven для компиляции моего проекта. Хотя я только что создал проект и добавил зависимости для разных libararies.
Когда я добавил их, maven начал жаловаться на отсутствующие tools.jar
, поэтому я добавил ниже свой pom.xml
:
com.sun tools 1.6 system ${java.home}/../lib/tools.jar
Когда я запустил установку maven, я получил ошибку для отсутствующей банки, как показано ниже:
- Gradle не включает зависимости в опубликованном pom.xml
- Gradle build.gradle для Maven pom.xml
- Как передать переменную среды в POM.xml?
- Чтение файла свойств из файла POM в 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
Может ли кто-нибудь предложить какое-нибудь динамическое решение для этого?
- Maven: включение jar не найден в публичном репозитории
- Maven: жизненный цикл против фазы против плагина против цели
- Укажите JDK для Maven для использования
- IntelliJ - преобразовать проект / модуль Java в проект / модуль Maven
- остановите IntelliJ IDEA для переключения уровня Java-уровня каждый раз, когда pom перезагружается (или меняет уровень языка проекта по умолчанию)
- Проверка подлинности зависимостей в автоматизированных системах сборки на основе Maven POM
- Удаление или удаление файлов ресурсов из целевого каталога с помощью файла pom
- Ошибка при развертывании артефакта в Nexus
Это ошибка в поддержке 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 не может его найти.