Нет, это не так. Это указывает на JRE, используемый вашим JDK, и это то, что он должен. Если распечатать JAVA_HOME
вне Maven, он должен напечатать правильно:
C:\>echo %JAVA_HOME%
C:\Program Files\Java\jdk1.7.0_07
C:\>mvn -version
Apache Maven 3.0.4 (r1232337; 2012-01-17 10:44:56+0200)
Maven home: C:\APPS\apache-maven-3.0.4\bin\..
Java version: 1.7.0_07, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.7.0_07\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"
C:\>
Поэтому в основном JAVA_HOME должна указывать на установку JDK (специалист нуждается в tools.jar), но на самом деле Maven использует JRE в JDK, чтобы запустить себя ,
При использовании mvn -version
, специалист использует Java внутренний java.home свойство, как видно из source code:
version.append("Java home: " + System.getProperty("java.home", "<unknown java home>")).append(LS);
Это свойство не то же самое, как установка окружения JAVA_HOME, так что он может обмануть вас. Это фактически динамическое свойство, показывающее, какой JRE запускает ваш код. Если вы скомпилируете и выполните тестовый класс Test.java, напечатайте то же самое, вы увидите, что если ваш JAVA_HOME указывает на JDK, значение java.home не равно вашему JAVA_HOME. Это ожидается.
Цитирование this:
В чем разница между JAVA_HOME и java.home?
JAVA_HOME - это каталог установки JDK, например C: \ jdk5. Он должен быть установлен как переменная среды и указан в командных файлах Windows или Unix-скриптах. У меня всегда есть его в панели управления Windows и .tcsh , а также другие общие переменные среды. В некоторых приложениях Java для этой цели используется имя jdk.home, которое, я думаю, является лучшим именем. Но JAVA_HOME используется с самого начала и составляет .
java.home - это каталог установки JRE, например C: \ jdk5 \ jre, или C: \ Program Files \ Java \ jre1.5.0_06. В отличие от JAVA_HOME, я никогда не видел java.home как переменную среды. java.home - это встроенное Java системное свойство, значением которого является каталог установки JRE. Поскольку все свойства системы Java также отображаются как свойства сборки Ant, то вы можете использовать $ {java.home} в файлах сборки, используя .
Будет ли лучшее имя? Может быть, но я не думаю, что Солнце будет изменить его.
Вы можете видеть, что Maven использует JAVA_HOME на mvn.bat:
:endInit
SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
..
%MAVEN_JAVA_EXE% %MAVEN_OPTS% -classpath %CLASSWORLDS_JAR% ..
И если вы хотите, чтобы убедиться, вы можете закомментировать «@echo от» заявление в mvn.bat, так что вы может видеть, что он используется.
TL; DR: На основании информации, которую вы указали, ваша конфигурация верна, не нужно ничего менять.
Редактировать: теперь есть также an issue open about this being confusing. Возможно, они изменят его в будущем.
Спасибо! +1 для «TL; DR';)) –
Нет проблем. Может быть, согласиться, если вы чувствуете, что это ответили на вопрос :) – eis
@eis Привет, У меня проблема: http://stackoverflow.com/questions/26313902/maven-error-perhaps-you-are-running-on-a- jre-rather-than-a-jdk здесь, можете ли вы, пожалуйста, помочь мне разобраться. Благодарю. – Kraken