当我使用Intellij Idea中"Runtime.getRuntime().exec"的方法时如何设置JAVA_HOME?



我想使用"jdeps"命令来分析一些jar文件的依赖关系。我的操作系统是Windows10。核心代码是

String command = String.format("jdeps "%s"", path.toAbsolutePath().toString());
String format = String.format("cmd.exe /c %s", command);
process = Runtime.getRuntime().exec(format);

我的电脑里有两个JDK版本,JDK11和JDK8。我想使用JDK11,并将环境变量JAVA_HOME设置为JDK11的路径。当我使用cmd-windows执行代码时,它可以随心所欲地运行,但如果我在Intellij Idea中运行它,JDK将更改为JDK8。

我确信我已经将项目设置-项目-项目SDK设置为JDK11项目语言级别是SDK默认设置(11 lambda参数的本地变量语法(模块--源--语言级别为"11 lambda参数的本地变量语法"。Intellij Idea的Java编译器也设置为11。在我的Intellij想法中没有任何关于JDK8的内容。

但是如果我在Intellij Idea中运行我的代码,JDK仍然更改为JDK8。这让我疯了。是虫子吗?如何设置JDK11?

顺便说一句,我在代码中执行了"setx JAVA_HOME"命令,将JAVA _HOME设置为JDK11,但它不起作用。

这些都不使用JAVA_HOME

当您像那样执行jdeps时,不合格,您将使用PATH上的版本。

更改PATH,或限定该命令。

例如,默认情况下,我在PATH上没有Java,所以运行jdeps不合格会失败,但如果我合格命令,我可以运行它:

C:>jdeps -version
'jdeps' is not recognized as an internal or external command,
operable program or batch file.
C:>C:progJava64jdk1.8.0_181binjdeps -version
1.8.0_181
C:>C:progJava64jdk-13.0.2binjdeps -version
13.0.2

Intellij Idea如果我没有设置任何内容,就在环境变量中使用PATH。我在代码中运行echo%PATH%。结果因系统环境变量而异。我曾试图重新启动我的Intellij Idea,但它不起作用。最后,我重新启动我的电脑,它工作了。

相关内容

最新更新