0

这个小 java 代码会根据执行环境产生不同的输出:

ProcessBuilder builder = new ProcessBuilder( "cmd", "/c", "set" );
builder.directory( new File("c:/") );
Process p = builder.start();

System.out.println(System.getenv("PATH"));

如果在命令 promt 上执行,它将显示完整的 PATH 变量,该变量也可以通过导航到 Systenproperties->Environmentvariables (PATH) 或使用 cmd、输入 set 并查找 PATH 变量来显示。

Path=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Perforce;C:\Program Files\GnuWin32\bin;

如果在 eclipse 中执行,它也会声明一个 PATH 变量,但它与系统本身的变量不一致。

Path=C:/Program Files/Java/jre7/bin/client;C:/Program Files/Java/jre7/bin;C:/Program Files/Java/jre7/lib/i386;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Perforce;C:\eclipse;

问题是,我需要使用 processbuilder 在我的 java 环境中运行外部应用程序(openssl)。该应用程序的路径也在 Path 变量中说明。但是如果使用 eclipse 执行代码(在这种情况下是必须的),则此路径不可用。

所以我完全不知道为什么会这样以及如何解决它。我什至尝试将执行类流式传输到硬盘并尝试使用另一个 processbuilder 执行该类,但 Path 变量仍然不等于预期的变量(猜测是由于继承)

请,如果你们中的一些人有任何线索如何使用 eclipse 获得与系统本身相同的 Path 变量内容,请指出。

顺便提一句。使用 WINDOWS 机器和使用 Kepler 构建

4

0 回答 0