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();
}
添加回答
举报