![](/img/trans.png)
[英]Maven does not recognize the $JAVA_HOME jdk installed on Ubuntu shell
[英]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
不应该说开发工具包而不是运行时环境吗?
我不认为我们会通过问你问题来解决问题。 相反,我建议您执行以下操作:
在命令提示符处,将环境变量%MAVEN_BATCH_ECHO%
设置为on
的值。 然后在同一命令提示符下,运行mvn
。 这应该回显mvn.cmd
批处理文件运行的所有命令。
将 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 做一些不同的事情。在下结论之前检查它。)
如果这不起作用,请修改批处理文件并添加一行来回显 % 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_HOME
和PATH
环境变量中,即不要在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.