繁体   English   中英

为什么 maven 会忽略我安装的 JDK?

[英]Why does maven ignores the JDK i installed?

当我对 Maven (使用mvn命令)执行任何操作时,我收到以下消息:

JAVA_HOME 环境变量未正确定义 运行此程序需要此环境变量 注意:JAVA_HOME 应指向 JDK 而不是 JRE

java -version

返回以下内容:

openjdk 版本 "1.8.0_212-1-ojdkbuild" OpenJDK 运行时环境 (build 1.8.0_212-1-ojdkbuild-b04) OpenJDK 64-Bit Server VM (build 25.212-b04, 混合模式)

我的 JAVA_HOME 指向这个 JDK 的 bin 文件夹。 我的 PATH 变量中也有相同的 bin 文件夹。

我的问题是我做错了什么? java -version不应该说开发工具包而不是运行时环境吗?

我不认为我们会通过问你问题来解决问题。 相反,我建议您执行以下操作:

  1. 在命令提示符处,将环境变量%MAVEN_BATCH_ECHO%设置为on的值。 然后在同一命令提示符下,运行mvn 这应该回显mvn.cmd批处理文件运行的所有命令。

  2. 将 output 与系统上安装的批处理文件的源进行比较。 特别是,查看这些行的回显:

     @REM ==== START VALIDATION ==== if not "%JAVA_HOME%"=="" goto OkJHome for %%i in (java.exe) do set "JAVACMD=%%~$PATH:i" goto checkJCmd:OkJHome set "JAVACMD=%JAVA_HOME%\bin\java.exe":checkJCmd if exist "%JAVACMD%" goto chkMHome echo The JAVA_HOME environment variable is not defined correctly >&2 echo This environment variable is needed to run this program >&2 echo NB: JAVA_HOME should point to a JDK not a JRE >&2 goto error

    (请注意,上面的摘录取自最新版本的 Maven 批处理文件。您可能有旧版本的 Maven 做一些不同的事情。在下结论之前检查它。)

  3. 如果这不起作用,请修改批处理文件并添加一行来回显 % echo %JAVA_CMD%设置的内容。 然后运行修改后的批处理文件。

请注意,验证实际上是检查%JAVA_CMD%是否作为文件存在。


我看到你实际上已经通过重新安装解决了这个问题。 不幸的是,这并不能告诉我们真正的问题是什么。

JAVA_HOME应该是bin文件夹所在的文件夹,但是我认为你已经安装了java,没有jdk,运行javac -version你会看到编译器是否可用。

可能您应该安装 package openjdk-8-jdk ,但您只有openjdk-8-jre 那是 ubuntu package 名称。 名称可能因您的操作系统而异。

看来您已经在C:\Program Files\...下安装了 JDK,因此您需要将绝对路径放在JAVA_HOMEPATH环境变量中,即不要在PATH中设置%JAVA_HOME%\bin 而是在PATH环境变量中设置C:\Program Files\...\bin

此外,请确保JAVA_HOME中设置的路径比PATH变量中设置的路径高一级。

最后但并非最不重要的一点是,确保将此 JDK 的路径移动到PATH下的所有值之上,这将确保另一个 JDK 的路径不会优先于您要使用的 JDK。

卸载所有内容并清除目录并重新启动计算机后。 我重新安装了所有东西。 在系统变量中,PATH 设置为 java 路径 + /bin,在 JAVA_HOME 上它只是文件夹的路径。 MAven 再次运行

暂无
暂无

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

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