我正在学习如何使用ProcessBuilder,我创建了一个名为socketpractice的包,在我有2个类,我试图创建一个新的进程,其中'Program.java'调用'test1.java',因此它打印'test1'。
当我使用命令提示符时:"java socketpractice . "test1" 'test1'打印,但使用Netbeans则不打印。
问题是,我如何设置路径,使其以相同的方式工作,或者我还错过了什么?我使用Netbeans。
Program.java
package socketspractice;
import java.io.File;
import java.io.IOException;
import java.lang.ProcessBuilder;
public class Program {
public static void main(String[] args) throws IOException, InterruptedException {
ProcessBuilder builderExecute = new ProcessBuilder("java", "socketspractice.test1");
builderExecute.start();
}
}
和
test1.java 包socketspractice;
public class test1 {
public static void main(String[] args) {
// TODO code application logic here
System.out.println("test1");
}
}
我们方法的主要问题是,当你启动ProcessBuilder时,它不知道你的项目在你的机器上的位置,因为它作为一个独立的JVM进程运行。
所以请创建你的项目作为一个maven项目,然后试着把编译好的jar放在classpath中,然后启动进程构建器。
ProcessBuilder pb = new ProcessBuilder("java","-classpath",
"<complete location of your jar containing test1>", "socketspractice.test1")