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());
我有一个 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());