ProcessBuilder 在同一项目中启动主要方法

ProcessBuilder launch main method in same project

我有一个 Java class 需要启动一个子进程。子进程是一个 class,在同一项目中包含一个 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。我究竟做错了什么?我可以很好地启动外部事物(例如 new 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());