JAVA_HOME 未出现且 MAVEN_HOME 设置不正确
JAVA_HOME not appearing and MAVEN_HOME is not set correctly
我通过将 /bin 添加到 PATH 并在没有 /bin 的情况下创建 JAVA_HOME 安装了 OpenJDK 12。
证明这是可行的:
C:\Users\rakoo>java -version
openjdk version "12.0.1" 2019-04-16
OpenJDK Runtime Environment (build 12.0.1+12)
OpenJDK 64-Bit Server VM (build 12.0.1+12, mixed mode, sharing)
C:\Users\rakoo>javac -version
javac 12.0.1
C:\Users\rakoo>echo %JAVA_HOME%
C:\Program Files\Java\jdk-12.0.1
问题是我在 cmd 中键入 mvn -v 时得到的结果。
Apache Maven 3.6.1 (d66c9c0b3152b2e69ee9bac180bb8fcc8e6af555; 2019-04-
04T21:00:29+02:00)
Maven home: C:\Program Files\apache-maven-3.6.1\bin\..
Java version: 12.0.1, vendor: Oracle Corporation, runtime: C:\Program
Files\Java\jdk-12.0.1
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
如您所见,没有"Java home: "并且maven home设置错误。我创建了名为 MAVEN_HOME 的系统变量,其值设置为 C:\Program Files\apache-maven-3.6.1。
证明 MAVEN_HOME 已设置:
C:\Users\rakoo>echo %MAVEN_HOME%
C:\Program Files\apache-maven-3.6.1
Screenshots 我的路径和系统变量。
我该如何解决这个问题?
您的问题分为两部分:
- "the maven home is set incorrectly" - 不,不是。
命令 mvn -v
的输出显示 MAVEN HOME 为 Maven home: C:\Program Files\apache-maven-3.6.1\bin\..
。注意最后的 .. 。这意味着比当前级别高 1 个目录,即 bin,实际上等于 C:\Program Files\apache-maven-3.6.1
,这是您设置的。
- 没有 "Java home: " - Maven 输出并不总是显示 JAVA 主页。所以应该问题不大。
我还看到 java 运行时的路径不正确。您检查过 jdk 文件夹了吗?是否已正确下载?它包含jre文件夹吗?
在我的例子中,运行时值显示:<...>/jdk_1.8/jre
编辑:
根据 this link,一个单独的 JRE 已从 JDK 11 开始删除。另外,请参见下面的屏幕截图。在上半部分(红线上方),java设置为jdk12(从您提供的link下载),JAVA_HOME仍然可见[=10] =] 输出。我看到的唯一区别是您的 Maven 版本不同。你能用maven 3.5.3试一次吗?
在 Maven 版本 3.6.1 中,他们已经从版本命令 (mvn -v
) 的 Maven 输出中删除了 "JAVA HOME" 属性,但这不会造成任何问题。可以参考下面的CLIReportingUtils.showVersion()方法link:
public static String showVersion()
{
final String ls = System.getProperty( "line.separator" );
Properties properties = getBuildProperties();
StringBuilder version = new StringBuilder( 256 );
version.append( buffer().strong( createMavenVersionString( properties ) ) ).append( ls );
version.append( reduce(
properties.getProperty( "distributionShortName" ) + " home: " + System.getProperty( "maven.home",
"<unknown Maven "
+ "home>" ) ) )
.append( ls );
version.append( "Java version: " ).append(
System.getProperty( "java.version", "<unknown Java version>" ) ).append( ", vendor: " ).append(
System.getProperty( "java.vendor", "<unknown vendor>" ) ).append( ", runtime: " ).append(
System.getProperty( "java.home", "<unknown runtime>" ) ).append( ls );
version.append( "Default locale: " ).append( Locale.getDefault() ).append( ", platform encoding: " ).append(
System.getProperty( "file.encoding", "<unknown encoding>" ) ).append( ls );
version.append( "OS name: \"" ).append( Os.OS_NAME ).append( "\", version: \"" ).append( Os.OS_VERSION ).append(
"\", arch: \"" ).append( Os.OS_ARCH ).append( "\", family: \"" ).append( Os.OS_FAMILY ).append( '\"' );
return version.toString();
}
我通过将 /bin 添加到 PATH 并在没有 /bin 的情况下创建 JAVA_HOME 安装了 OpenJDK 12。
证明这是可行的:
C:\Users\rakoo>java -version
openjdk version "12.0.1" 2019-04-16
OpenJDK Runtime Environment (build 12.0.1+12)
OpenJDK 64-Bit Server VM (build 12.0.1+12, mixed mode, sharing)
C:\Users\rakoo>javac -version
javac 12.0.1
C:\Users\rakoo>echo %JAVA_HOME%
C:\Program Files\Java\jdk-12.0.1
问题是我在 cmd 中键入 mvn -v 时得到的结果。
Apache Maven 3.6.1 (d66c9c0b3152b2e69ee9bac180bb8fcc8e6af555; 2019-04-
04T21:00:29+02:00)
Maven home: C:\Program Files\apache-maven-3.6.1\bin\..
Java version: 12.0.1, vendor: Oracle Corporation, runtime: C:\Program
Files\Java\jdk-12.0.1
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
如您所见,没有"Java home: "并且maven home设置错误。我创建了名为 MAVEN_HOME 的系统变量,其值设置为 C:\Program Files\apache-maven-3.6.1。
证明 MAVEN_HOME 已设置:
C:\Users\rakoo>echo %MAVEN_HOME%
C:\Program Files\apache-maven-3.6.1
Screenshots 我的路径和系统变量。
我该如何解决这个问题?
您的问题分为两部分:
- "the maven home is set incorrectly" - 不,不是。
命令 mvn -v
的输出显示 MAVEN HOME 为 Maven home: C:\Program Files\apache-maven-3.6.1\bin\..
。注意最后的 .. 。这意味着比当前级别高 1 个目录,即 bin,实际上等于 C:\Program Files\apache-maven-3.6.1
,这是您设置的。
- 没有 "Java home: " - Maven 输出并不总是显示 JAVA 主页。所以应该问题不大。
我还看到 java 运行时的路径不正确。您检查过 jdk 文件夹了吗?是否已正确下载?它包含jre文件夹吗?
在我的例子中,运行时值显示:<...>/jdk_1.8/jre
编辑:
根据 this link,一个单独的 JRE 已从 JDK 11 开始删除。另外,请参见下面的屏幕截图。在上半部分(红线上方),java设置为jdk12(从您提供的link下载),JAVA_HOME仍然可见[=10] =] 输出。我看到的唯一区别是您的 Maven 版本不同。你能用maven 3.5.3试一次吗?
在 Maven 版本 3.6.1 中,他们已经从版本命令 (mvn -v
) 的 Maven 输出中删除了 "JAVA HOME" 属性,但这不会造成任何问题。可以参考下面的CLIReportingUtils.showVersion()方法link:
public static String showVersion()
{
final String ls = System.getProperty( "line.separator" );
Properties properties = getBuildProperties();
StringBuilder version = new StringBuilder( 256 );
version.append( buffer().strong( createMavenVersionString( properties ) ) ).append( ls );
version.append( reduce(
properties.getProperty( "distributionShortName" ) + " home: " + System.getProperty( "maven.home",
"<unknown Maven "
+ "home>" ) ) )
.append( ls );
version.append( "Java version: " ).append(
System.getProperty( "java.version", "<unknown Java version>" ) ).append( ", vendor: " ).append(
System.getProperty( "java.vendor", "<unknown vendor>" ) ).append( ", runtime: " ).append(
System.getProperty( "java.home", "<unknown runtime>" ) ).append( ls );
version.append( "Default locale: " ).append( Locale.getDefault() ).append( ", platform encoding: " ).append(
System.getProperty( "file.encoding", "<unknown encoding>" ) ).append( ls );
version.append( "OS name: \"" ).append( Os.OS_NAME ).append( "\", version: \"" ).append( Os.OS_VERSION ).append(
"\", arch: \"" ).append( Os.OS_ARCH ).append( "\", family: \"" ).append( Os.OS_FAMILY ).append( '\"' );
return version.toString();
}