Странная проблема с зависимостями JAVA_HOME и maven

У меня есть переменная JAVA_HOME, установленная на C:\Program Files\Java\jre6\, когда я запускаю пакет maven в проекте, он сообщает мне, что он не может разрешить зависимость

[ERROR] Failed to execute goal org.codehaus.mojo:aspectj-maven-plugin:1.0:compile (default) on project roo: Execution default of goal o
rg.codehaus.mojo:aspectj-maven-plugin:1.0:compile failed: Plugin org.codehaus.mojo:aspectj-maven-plugin:1.0 or one of its dependencies
could not be resolved: Could not find artifact com.sun:tools:jar:1.4.2 at specified path C:\Program Files\Java\jre6/../lib/tools.jar ->
[Help 1]

поэтому он предполагает, что JAVA_HOME на самом деле на один уровень глубже, чем есть на самом деле, я просмотрел локальный репозиторий maven и обнаружил, что log4j 1.2.16 использует эту зависимость

Я попытался сделать JAVA_HOME похожим на C:\Program Files\Java\jre6\bin\, но тогда maven не запустится, он сказал мне, что мой путь JAVA_HOME был неправильным

Ответы

Ответ 1

Вам понадобится Java JDK, а не только JRE. Вы можете получить его на странице Страница Oracle Java

Изменить: Из Руководство по свойствам Maven:

${java.home} specifies the path to the current JRE_HOME environment use with relative paths to get for example:
<jvm>${java.home}../bin/java.exe</jvm>

И с помощью JDK, например, в c:\jdk, maven ${java.home} указывает на c:\jdk\jre

Ответ 2

Я также нашел это, что помогло мне.

... С Eclipse вам нужно проверить, что установленные JRE используют установки JDK.

Это означает, что в параметре конфигурации... Окно/Предпочтения/Java/Установленные JRE ... Вы должны указать на установку JDK.

Вам нужно изменить путь к jre внутри jdk. для% Program Files%\Java\jdk1.6.0_25\jre

Ответ 3

Переменная java.home может быть получена из вашего проекта pom.xml. Дважды проверьте ссылку на maven-компилятор-плагин. У меня была такая же проблема, когда пытались построить, об этом нытье она не может найти javac. Мой java.home, JAVA_HOME были установлены правильно.

То, что оказалось FIX для меня, это исправление pom.xml. Я закончил внесение следующих изменений:

            <!-- Original Version of compiler plugin reference -->
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.0.2</version>
            <configuration>
                <source>${default.java.version}</source>
                <target>${default.java.version}</target>
                <showDeprecation>false</showDeprecation>
                <executable>${default.java.home}/bin/javac</executable>
                <compilerVersion>${default.java.version}</compilerVersion>
                <fork>true</fork>
            </configuration>

            <!-- MODIFIED Version of compiler plugin reference -->
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.0.2</version>
            <configuration>

                <!-- SPECIFY A DISCRETE VERSION!! Do not let it derive it! -->
                <source>1.6</source>
                <target>1.6</target>

                <!--
                  <showDeprecation>false</showDeprecation>
                  <executable>${default.java.home}/bin/javac</executable>
                  <compilerVersion>${default.java.version}</compilerVersion>
                  <fork>true</fork>
               -->
            </configuration>

Ответ 4

Просто добавьте немного больше информации в ответ на изменение настроек Window. Я разместил JRE как C:\Program Files\Java\jre7, потому что это казалось очевидным выбором.

Однако это провал. Правильный ответ, как указано, C:\Program Files\Java\jdk1.7.0_10\jre. Я указываю это, потому что его легко сделать.

Ответ 5

У нас была такая же проблема сегодня. Оказывается, мне специально нужно было использовать "Program Files" в пути, несмотря на то, что эти окна устанавливают (и, следовательно, имя папки) на немецком языке.

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

Итак, если вы уверены, что ваши пути верны, попробуйте "Program Files" вместо вашей локализованной альтернативы. Работал для меня.

Ответ 6

для написания, компиляции и пакетной java-программы необходим JDK, поскольку необходимые инструменты распространяются только с помощью JDK (Java Development Kit). JRE (Java Runtime Environment) требуется только для запуска java-программы.

Ответ 7

Не вмешиваясь в переменную env JAVA_HOME, вот как я смог ее исправить.

Установите 1.6.x jdk.

В Eclipse/Preferences в установленных JRE добавьте запись для JDK и сделайте ее по умолчанию (укажите местоположение в папку JDK, например, C:\Program Files\Java\jdk1.6.0_34

Отредактируйте свойства и добавьте JDK_HOME/lib/tools.jar в список системных библиотек.

В качестве альтернативы, если предположить, что установлен jdk, вы можете добавить JDK/lib/tools.jar в список системных библиотек существующего JRE

по умолчанию.

Ответ 8

Эта проблема также возникает в Intellij IDEA (IDEA 11.x ~ Windows 7 ~ Java 7). Указание свойства systempath ссылалось на IDEA jre...

Устойчивым решением было создание локального профиля maven в $HOME/.m2/settings.xml

<profiles>
  <profile>
    <id>dev</id>
      <activation>
        <activeByDefault>true</activeByDefault>
          <jdk>NUMERIC_VERSION</jdk>
        </activation>
        <properties>
          <java.home>                   
            <!-- ABSOLUTE_PATH_HERE -->
          </java.home> 
        </properties>
  </profile>
</profiles>

Ответ 9

Я смог увидеть соответствующий ответ в командной строке при вводе java -version, но получил эту ошибку, набрав mvn -version.

В моем случае это была глупая ошибка. JAVA_HOME переменная окружения указывала на папку ..\jdk\bin все эти дни, и это вызвало эту проблему. После удаления bin из значения переменной JAVA_HOME я мог бы работать с Maven.

Примечание. Путь к системной переменной должен содержать значение, указывающее на папку bin вашего JDK.

С уважением, Balaji.K

Ответ 10

Правильный способ настройки переменных среды JAVA: -

  • Установите JAVA_HOME в папку "jdk folder" \jre
  • Добавить папку "jdk" \bin в переменную пользовательской среды PATH

JAVA_HOME - это местоположение "java.exe", которое должно поступать из папки JRE\bin. PATH должен искать javac.exe, который должен поступать из папки JDK\bin.

Это также гарантирует совместимость JDK и JRE

Ответ 11

Для запуска Maven - вам нужно настроить переменную среды JAVA_HOME, чтобы указать на JDK

например. JAVA_HOME = C:\Program Files\Java\jdk1.7.0_25

Также вам понадобится C:\Program Files\Java\jdk1.7.0_25\bin, включенный в переменную среды PATH.

С уважением, Dipan

Ответ 12

Я столкнулся с подобной проблемой, после чего была решена проблема:

JAVA_HOME = C:\Program Files\java\jdk
M2_HOME= C:\Program Files\apache-maven

inside path = ....%JAVA_HOME%\bin;%M2_HOME%\bin;

это решило проблему.

Ответ 13

У меня была аналогичная проблема, и ответ такой легкий:

maven не мог найти JAVA_HOME varayable, пока я не понял, что я написал путь Java в свою переменную path. Поэтому ответ на мою "ОШИБКУ: JAVA_HOME, не найденную в вас Environment...", должен был создать новую переменную с именем JAVA_HOME. Может быть, это неудача для чайников, но мне потребовался час, чтобы понять...

Ответ 14

Вы также должны убедиться, что библиотека Java находится в вашем пути к классу проекта. Перейдите к вкладке "Свойства проекта" → вкладка java build path- > . Проверьте, не указана ли библиотека jdk. Если не добавить его. Это также может быть причиной такой ошибки.

Ответ 15

У меня была эта проблема после автоматического обновления Java (в Windows 7) для моей командной строки Maven проектов (отдельная проблема, чем версия maven в Eclipse). Автоматическое обновление JRE удалило папку jre под JDK, на которую указала моя переменная среды JAVA_HOME. Поскольку jre не был найден, maven по умолчанию не выполнял установленную JRE (до сих пор не выяснил, как). Я восстановил папку jre под моим каталогом JDK и удалил ссылку на C:\ProgramData\Oracle\Java\javapath, которая была добавлена ​​в начало переменной Path пути, а сборки maven вернулись к нормальной работе.