这个小的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执行代码(在这种情况下必须执行),则此路径不可用。
所以我完全不知道为什么会这样,以及如何解决它。 我甚至尝试将执行类流式传输到hdd并尝试使用另一个流程构建器执行该类,但Path变量仍然不等于预期的一个(由于继承而猜测)
如果你们中的一些人有任何线索如何使用eclipse获取与Path变量相同的内容,请指出它。
顺便说一句。使用WINDOWS机器&使用Kepler build