1 回答

TA貢獻1805條經驗 獲得超10個贊
ProcessBuilder 不使用整個命令行。它需要爭論。
例如,您當前的代碼正在尋找一個基本名稱長度為 90 個字符的程序java -cp … Dog.exe。
您需要傳遞一個參數數組:
// Note the use of a String array, not a single String
public static void runCode(String... javaArgs) {
List<String> args = new ArrayList<>();
args.add("java");
Collections.addAll(args, javaArgs);
ProcessBuilder processBuilder = new ProcessBuilder(args);
這可以被調用為:
runCode(
"-cp",
"C:\\Program Files\\Apache Software Foundation\\Tomcat 8.5\\webapps\\Test\\classes",
"Dog");
另外,不要只打印異常消息。消息本身很少有用。您通常想要打印整個堆棧跟蹤,這樣您將擁有所有信息并且您將確切地知道問題發生的位置:
} catch (IOException ex) {
ex.printStackTrace();
}
添加回答
舉報