私のプロセスでは、システム変数にコンテンツを追加するだけです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を開発しているので、新しいパスを書き込むことが唯一のオプションです。