Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 进程没有生成?_Java - Fatal编程技术网

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来开始测试,并检查返回的退出值