我期待從Java'ProcessBuilder(在Windows)中運行以下Unix命令。CommandLine使用Java中的ProcessBuilder和程序之間的管道
$ gensky 1 21 11 | genskyvec -m 1 > skyvec_1-21-11_1.skv
所以我寫了這一點:
String cmd = String.format("C:\\Radiance4.2\\bin\\gensky 1 21 11 | %s -m 1 > %s\n", "C:\\Radiance4.2\\bin\\genskyvec", "C:\\Radiance4.2\\temp\\output_test.skv");
這:
ProcessBuilder builder = new ProcessBuilder(cmd);
builder.redirectErrorStream(true);
Process process = null;
try {
process = builder.start();
System.out.println("Started Processing!");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
但繼續得到錯誤 - 沒有找到該程序。任何想法我做錯了什麼?
使用'名單'傳遞來傳遞參數 –
即。列表 command = new ArrayList (); \t command.add(「cmd.exe」); \t command.add(「/ C」); \t command.add(「start」); –
我想在windows上是'gensky.exe'等等。我想'gensky.exe'對管道一無所知,這是shell的一個特性(如果你想將'cmd.exe'稱爲一個shell ..)。 –