我想使用"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,但它不起作用。最后,我重新启动我的电脑,它工作了。