当前位置: 首页 > 知识库问答 >
问题:

Maven中的Java_home

薛欣荣
2023-03-14

当我运行mvn-version时,我注意到java_home指向...jdk\jre(如下所示)。有错吗?不是应该指向...\jdk.x.y.z(没有\jre)吗?如果是,我如何重置它?(在全局%JAVA_HOME%中指向JDK目录)

C:\Users\Owner>mvn -version
Apache Maven 2.2.1 (r801777; 2009-08-06 15:16:01-0400)
Java version: 1.7.0_17
Java home: C:\Program Files\Java\jdk1.7.0_17\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 7" version: "6.1" arch: "amd64" Family: "windows"

共有1个答案

逄边浩
2023-03-14

不,没有错。它指向JDK使用的JRE,这是JDK应该使用的。如果在maven外部打印java_home,它应该可以正确地打印:

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安装(maven需要tools.jar),但maven实际上使用JDK中的jre来运行自己。

在使用mvn-version时,maven使用java内部java.home属性,从源代码中可以看出:

version.append( "Java home: " + System.getProperty( "java.home", "<unknown java home>" ) ).append( LS );

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}。

Jre.home是不是更好的名字?也许吧,但我不认为Sun会改变它。

:endInit
SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
..
%MAVEN_JAVA_EXE% %MAVEN_OPTS% -classpath %CLASSWORLDS_JAR% ..
 类似资料:
  • 问题内容: 跑步时,我注意到要点(如下所示)。错了吗 它不是应该指向(没有)吗?如果是这样,如何重置?(在全局指向目录) 问题答案: 不,没错。它指向您的JDK使用的JRE,这是应该的。如果您在Maven外部打印出来,它应该可以正确打印: 因此,基本上JAVA_HOME需要指向JDK安装(maven需要tools.jar),但是maven实际上使用JDK中的jre来运行自身。 使用时,maven使

  • 我有一个使用Java Version8的Spring和Maven的项目。当我运行maven update时,它适用于Java9或更高版本,当我编译它时,它适用于Java8。我注意到了这一点,因为用Maven更新会将一个特定的类更改为Java9,而我无法导入这个类。 这个类是:javax.annotation.generated(Java8)。 这是要导入的类。但是,当我进行maven更新时,文件的

  • 我的项目有3个maven模块,它们是由nodejs脚本构建的。 现在我想与Jenkin和Nexus集成。我的Jenkin构建配置如下所示: 在我的本地maven 中,我为Nexus存储库和另一个存储库添加了一些配置。 你能告诉我这个案子吗?我是詹金的新手。 提前致谢。

  • (我知道以前已经问过这个问题,但我不能用这些答案解决这个问题) 我对Java很陌生,我正尝试编写一些代码来访问和使用https://console.thethingsnetwork.org/中的数据,当我执行 时,我得到了这个结果。(调试/来自终端的错误) null 到目前为止,这是我的app.java 和我的pom.xml 如果有人能帮助我,我将不胜感激,如果你需要更多的细节,请问。

  • 通过将maven插件添加到eclipse(m2eclipse),项目使用的所有JAR都自动添加到eclipse中来构建项目路径吗?如果不是自动添加,应该怎么做才能将JAR添加到构建路径中?

  • 我已经将这个Struts2-maven项目导入到我的Eclipse中。