我的过程只是简单地向系统变量添加一些内容PATH
。实际上,我正在Process
使用以下方法执行此操作setx.exe
:
public void changePath(String newPath ) {
String path = System.getenv("PATH") + ";";
String[] cmd = new String[]{"C:\\Windows\\System32\\setx.exe", "PATH",
path+newPath, "-m"};
ProcessBuilder builder = new ProcessBuilder(cmd);
...
}
所以我试着给它写一个测试用例。
Class UpdatePathTest {
@Test
public void testUpdatePath() {
//call the method that update the path
changePath("C:\\somebin");
assertTrue(System.getenv("PATH").contains("C:\\somebin")); //fails
// ProcessBuilder with command String[]{"cmd", "/C", "echo", "%PATH%"}; will fail too.
//and the above in a new Thread will fail too.
}
}
那么,有没有办法获得新的 PATH 值?编写新路径是唯一的选择,因为我正在开发一个将安装桌面应用程序的 jar。