Java 进程没有生成?
我正在尝试使用以下代码生成一个新进程:Java 进程没有生成?,java,Java,我正在尝试使用以下代码生成一个新进程: String exec = (System.getProperty("user.dir") + "/privateers.jar"); String[] command = {"javaw", "-jar", exec}; final Process process = Runtime.getRuntime().exec(command); System.out.println("Running " +
String exec = (System.getProperty("user.dir") + "/privateers.jar");
String[] command = {"javaw", "-jar", exec};
final Process process = Runtime.getRuntime().exec(command);
System.out.println("Running " + exec);
System.exit(0);
但由于某些原因,该进程没有运行
正在运行的:+exec打印出正在运行的D:\Downloads\mcp\ship\ShipLauncher/privateers.jar
当我转到D:\Downloads\mcp\ship\ShipLauncher/时,有一个有效的文件名privateers.jar,当我用bat文件打开它时,它可以正常工作:
java -jar privateers.jar
PAUSE
控制台中绝对没有错误。
有人知道这里的问题吗?我似乎找不到问题
更新:
我尝试使用ProcessBuilder。但是没有运气
String exec = (System.getProperty("user.dir") + java.io.File.separator + "privateers.jar");
String[] command = {"java", "-jar", exec};
ProcessBuilder pb =
new ProcessBuilder(command[0], command[1], command[2]);
progressBar.setValue(100);
System.out.println(pb.command());
pb.start();
//final Process process = Runtime.getRuntime().exec(command);
System.out.println("Running " + exec);
改用ProcessBuilder当您使用Windows时,是否尝试使用\而不是/?String exec=System.getPropertyuser.dir+\\privateers.jar;它可能正在退出,因为其父进程正在退出。尝试更换System.exit0;使用Thread.sleepLong.MAX_VALUE;。不幸的是,你不能这样做。当父进程退出时,任何分叉的进程都将被终止。您需要一个中间脚本来实现这一点。通过从进程中读取标准输出并在进程上使用waitFor来开始测试,并检查返回的退出值