简体   繁体   English

JAVA_HOME没有出现,MAVEN_HOME设置不正确

[英]JAVA_HOME not appearing and MAVEN_HOME is not set correctly

I installed OpenJDK 12 by adding the /bin to the PATH and making a JAVA_HOME without the /bin. 我通过将/ bin添加到PATH并在没有/ bin的情况下创建JAVA_HOME来安装OpenJDK 12。

Proof that this works : 证明这是有效的:

  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

The problem is what I get when I type mvn -v in cmd. 问题是我在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"

As you can see, there is no "Java home: " and the maven home is set incorrectly. 如您所见,没有“Java home:”并且maven home设置不正确。 I made system variable called MAVEN_HOME with the value set to C:\\Program Files\\apache-maven-3.6.1. 我创建了名为MAVEN_HOME的系统变量,其值设置为C:\\ Program Files \\ apache-maven-3.6.1。

Proof that MAVEN_HOME is set: 证明MAVEN_HOME已设置:

C:\Users\rakoo>echo %MAVEN_HOME%
C:\Program Files\apache-maven-3.6.1

Screenshots of my Path and system variables. 我的路径和系统变量的屏幕截图

How do I go about fixing this? 我该如何解决这个问题?

Your question has 2 parts: 你的问题有两个部分:

  1. "the maven home is set incorrectly" - No. It's not. “maven家庭设置不正确” - 不,不是。

Output of command mvn -v shows MAVEN HOME as Maven home: C:\\Program Files\\apache-maven-3.6.1\\bin\\.. . 输出命令mvn -v显示MAVEN HOME为Maven home: C:\\Program Files\\apache-maven-3.6.1\\bin\\.. Notice the .. at the end. 注意......最后。 It means 1 dir up from current level ie bin, which effectively equals C:\\Program Files\\apache-maven-3.6.1 which is what you have set. 它意味着当前级别的1个目录即bin,它实际上等于你设置的C:\\Program Files\\apache-maven-3.6.1

  1. there is no "Java home: " - the maven output does not always shows the JAVA home. 没有“Java home:” - maven输出并不总是显示JAVA主页。 So it should not be a problem. 所以它应该不是问题。

Also I see incorrect path of java runtime. 另外我看到java运行时路径不正确。 Have you checked your jdk folder. 你检查过你的jdk文件夹吗? Has been correctly downloaded? 已经正确下载? Does it contain jre folder? 它是否包含jre文件夹? In my case runtime value shows: <...>/jdk_1.8/jre 在我的例子中,运行时值显示: <...>/jdk_1.8/jre

EDIT: 编辑:

As per this link , a separate JRE has been removed JDK 11 onwards. 根据此链接 ,单独的JRE已从JDK 11开始删除。 Also, see below screenshot. 另请参见下面的屏幕截图。 In the upper half (above red line) , java is set to jdk 12 (downloaded from link provided by you), and still JAVA_HOME is visible in mvn -v output. 在上半部分(红线上方),java设置为jdk 12(从您提供的链接下载),仍然可以在mvn -v输出中看到JAVA_HOME。 Only difference I see is that your maven version is different. 我看到的唯一区别是你的maven版本不同。 Can you try once with maven 3.5.3? 你能用maven 3.5.3尝试一次吗?

在此输入图像描述

In Maven version 3.6.1 they have removed the "JAVA HOME" property from maven output for the version command( mvn -v ) but that should not pose any problem as such. 在Maven版本3.6.1中,他们从版本命令( mvn -v )的maven输出中删除了“JAVA HOME”属性,但这不应该造成任何问题。 You can refer to CLIReportingUtils.showVersion() method in below link: 您可以在以下链接中引用CLIReportingUtils.showVersion()方法:

https://github.com/apache/maven/blob/maven-3.6.1/maven-embedder/src/main/java/org/apache/maven/cli/CLIReportingUtils.java https://github.com/apache/maven/blob/maven-3.6.1/maven-embedder/src/main/java/org/apache/maven/cli/CLIReportingUtils.java

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();
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM