【问题标题】:Java ProcessBuilder and Windows system variablesJava ProcessBuilder 和 Windows 系统变量
【发布时间】:2012-12-03 10:00:58
【问题描述】:

我想在 Java 中执行一个带有路径的程序 由自定义系统变量(“CHROME”)定义。

new ProcessBuilder("CHROME").start(); 

Win7: 工作正常(指向 AppData\Local)

Win Vista: 什么都不做(指向程序文件)

我需要做什么才能让它在 Vista 上运行?

【问题讨论】:

  • new ProcessBuilder("CHROME").start(); 这是启动Process 的一种非常简单的方法。不幸的是,结合“简单”和“过程”通常会失败。请参阅 this article 并忽略它在标题中包含“Runtime.exex()”的事实 - 该建议同样适用于 ProcessBuilder。实施所有建议,如果这本身不能解决问题,至少它会提供有用的信息。使用redirectErrorStream()
  • 这只是我的最小代码示例,我实际上使用了参数列表,设置工作路径等等......别担心;-)

标签: java windows processbuilder


【解决方案1】:

如果我理解正确的话,CHROME 是一个包含应用程序路径的系统变量。如果是这样,你可以试试

String path = System.getenv("CHROME");
new ProcessBuilder(path).start(); 

Runtime.getRuntime().exec(path);

【讨论】:

  • 我会尝试,但我需要先做一些解析,因为 getenv 是可选的:(
【解决方案2】:

this question中建议从cmd.exe运行程序,即

new ProcessBuilder("cmd.exe", "%CHROME%");

只要%CHROME% 在主 Java 程序传递给子进程的环境中,这应该可以工作。

【讨论】:

  • 我之前已经尝试过,但不喜欢这个解决方案,因为您无法终止或等待已启动的进程。我也试过批处理文件....
猜你喜欢
  • 1970-01-01
  • 2015-09-12
  • 1970-01-01
  • 1970-01-01
  • 2015-08-14
  • 2011-10-26
  • 2012-03-29
  • 1970-01-01
相关资源
最近更新 更多