Java 2.jar文件彼此不交互

Java 2.jar文件彼此不交互,java,Java,我最近在Java程序中添加了一个更新程序,所有代码都正常工作。然而,我遇到的问题是,最初的程序没有继续运行第二个.jar文件,甚至没有在NetBeans中运行该文件,而是关闭了 我相信这段代码是不起作用的,但我已经完成了大量的系统。out's,它只是直接运行代码,而没有运行第二个程序: private void update() { String[] run = {"java", "-jar", "updater/update.jar"}; try { Runti

我最近在Java程序中添加了一个更新程序,所有代码都正常工作。然而,我遇到的问题是,最初的程序没有继续运行第二个.jar文件,甚至没有在NetBeans中运行该文件,而是关闭了

我相信这段代码是不起作用的,但我已经完成了大量的系统。out's,它只是直接运行代码,而没有运行第二个程序:

private void update() {
    String[] run = {"java", "-jar", "updater/update.jar"};
    try {
        Runtime.getRuntime().exec(run);
    } catch (Exception ex) {
        ex.printStackTrace();
    }
    System.exit(0);
}
我的文件夹/文件位于以下路径中:

LibTiles.jar   (initial file that runs this code)
updater/update.jar

有人能看到任何错误吗?或者我在其他地方做错了什么吗?

我相信java.exe不在您的PATH环境中

此外,尝试用文件启动java.exe或更好的javaw.exe(添加.exe),如下所示:

String[] run = {"java.exe", "-jar", "updater/update.jar"};
如果不需要控制台窗口,请使用:

String[] run = {"javaw.exe", "-jar", "updater/update.jar"};

你问题的措辞令人非常困惑。您提到LibTiles.jar,并在updater/update.jar中发布了一个运行main方法的代码段。update.jar中的代码是否需要LibTiles.jar中的.class文件

我可以想到两个可能的问题,都是由于update.jar中缺少清单造成的。它必须说明主方法是什么,并且它还包含类路径。我建议你读一读

您还应该使用Process编写方法,如下所示:

import java.io.*;
导入java.util.*;
公共类DoProcessBuilder{
公共静态void main(字符串args[])引发IOException{

如果(args.length),我将如何将它从.jar更改为.exe?不,您不会更改jar。
   import java.io.*;
   import java.util.*;

   public class DoProcessBuilder {
     public static void main(String args[]) throws IOException {

       if (args.length <= 0) {
         System.err.println("Need command to run");
         System.exit(-1);
       }

       Process process = new ProcessBuilder(args).start();
       InputStream is = process.getInputStream();
       InputStreamReader isr = new InputStreamReader(is);
       BufferedReader br = new BufferedReader(isr);
       String line;

       System.out.printf("Output of running %s is:", 
          Arrays.toString(args));

       while ((line = br.readLine()) != null) {
         System.out.println(line);
       }

     }
  }