当前位置: 首页 > 知识库问答 >
问题:

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

蒯翰墨
2023-03-14

我想使用“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);

我的计算机中有2个JDK版本,JDK11和JDK8。我想使用JDK11,我将环境变量JAVA_HOMEJDK11的路径。当我使用cmd windows执行代码时,它可以按照我想要的方式工作,但是如果我在Intellij Idea中运行它,JDK将更改为JDK8。

我确定我已经把项目设置-项目-项目SDK设置为JDK11了。项目语言级别是SDK默认值(lambda参数的11个局部变量语法)。模块-源代码-语言级别是“11-lambda参数的局部变量语法”。Intellij Idea的Java编译器也设置为11。在我的Intellij想法里没有关于JDK8的东西。

但是,如果我在Intellij Idea中运行我的代码,JDK仍然更改为JDK8。那让我发疯。是虫子吗?怎么做才能设置JDK11?

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

共有2个答案

左丘阳晖
2023-03-14

Intellij Idea在环境变量中使用PATH,如果我没有设置任何东西。我在代码中运行回声%PATH%。系统环境变量的结果不同。我试图重新启动我的Intellij Idea,但它不起作用。最后,我重新启动计算机,它的工作原理。

穆季萌
2023-03-14

这些都没有使用JAVA_HOME

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

更改PATH,或限定命令。

E、 g.默认情况下,路径上没有Java,因此运行jdepsunqualified失败,但如果我限定命令,我可以运行它:

C:\>jdeps -version
'jdeps' is not recognized as an internal or external command,
operable program or batch file.

C:\>C:\prog\Java64\jdk1.8.0_181\bin\jdeps -version
1.8.0_181

C:\>C:\prog\Java64\jdk-13.0.2\bin\jdeps -version
13.0.2
 类似资料:
  • 问题内容: 仅当数据库名称包含(新数据库(myid)等)时,我才能读取文件。我给出以下示例代码: 假设我的数据库名称de mo是指我在打印行时得到的数据库名称仅是de。数据库名称带有空白时可以吗? 问题答案: 您熟悉双引号错误吗?(用于或) 你可以试试: 只需确保您不必传递的任何参数都包含双引号( 而不 是以双引号开头) (请参见 错误6511002 ) 任何类似的参数: 将在 内部 (通过实现)

  • 当我使用concurrentKafkaListenerContainerFactory时,有什么方法可以设置主题吗?我根本不想做任何注释。

  • 问题内容: 我实际上何时需要调用此方法Runtime.getRuntime()。addShutdownHook()以及何时或为何需要关闭应用程序。任何人都可以通过举例说明一下。 谢谢 问题答案: 据我所知,我将在下面进行解释。您可以搜索它并找到很多信息。 将注册一些在程序终止时要执行的动作。您启动的程序以两种方式结束: 主线程(根)结束其运行上下文; 该程序遇到一些意外情况,因此无法继续进行。 如

  • 问题内容: 此代码将执行一个外部exe应用程序。 如果我想执行外部Java文件怎么办?可能吗?例如以下命令: 该代码在java和cmd提示符下不起作用。如何解决呢? 问题答案: 首先,您的命令行看起来不正确。执行命令与批处理文件不同,它不会执行一系列命令,而只会执行一个命令。 从外观上看,您正在尝试更改要执行的命令的工作目录。一个更简单的解决方案是使用,它将允许您指定给定命令的起始目录… 例如…

  • 问题内容: 我正在执行一个命令,该命令向我返回文件的修订号;’文档名称’。但是,如果执行命令时遇到问题,则应用程序将挂断。我该怎么做才能避免这种情况?请在下面找到我的代码。 问题答案: 我想问题是您只在读取InputStream而没有在读取ErrorStream。您还必须注意并行读取两个流。可能发生这种情况,当前从输出流中管道传输的数据已填满OS缓冲区,您的exec命令将自动挂起,以使您的阅读器有

  • 问题内容: 我有一个程序Test.java: 应该将HelloWorld1和HelloWorld2打印到文件text.txt中。但是,当我查看文件时,只能看到HelloWorld1。 HelloWorld2去了哪里?它消失在稀薄的空气中了吗? 可以说我也想将HelloWorld2重定向到test.txt。我不能仅在命令中添加“ >> test.txt”,因为会出现文件已打开错误。那么我该怎么做呢?