ProcessBuilder在同一个项目中启动main方法

时间:2015-03-30 18:22:42

标签: java processbuilder

我有一个需要启动子进程的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(“记事本”))

1 个答案:

答案 0 :(得分:1)

您的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());