我有一个Java类,需要启动一个子进程。子进程是同一项目中包含main()方法的类。我有:

Class clazz = RunMQCommands.class;

String separator = System.getProperty("file.separator");
String classpath = System.getProperty("java.class.path");
String path = System.getProperty("java.home");

ProcessBuilder pb =
        new ProcessBuilder(path, "-cp",
        classpath,
        clazz.getCanonicalName());
pb.redirectErrorStream(true);
Process process = pb.start();
int retCode = process.waitFor();


这给了我一个

CreateProcess error=5, Access is denied


这是我对ProcessBuilder的首次尝试。我究竟做错了什么?我可以开始进行外部操作(例如,新的ProcessBuilder(“ notepad”))

最佳答案

您的path变量的值类似于

/usr/share/Java/1.8/jre


那不是可执行文件。

找到可执行文件java的位置,并将其值提供给path变量。

您的ProcessBuilder应该看起来像

ProcessBuilder pb =
    new ProcessBuilder("/usr/share/Java/1.8/jre/java", "-cp",
    classpath,
    clazz.getCanonicalName());

关于java - ProcessBuilder在同一项目中启动主要方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29353424/

10-12 06:31