2 .jar文件彼此不相互作用

时间:2011-02-26 19:54:55

标签: java

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

我相信这段代码不能正常工作但是我已经完成了一大堆System.out并且它只是直接运行代码而不运行第二个程序:

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

任何人都可以看到任何错误或者我在其他地方做错了吗?

2 个答案:

答案 0 :(得分:1)

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

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

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

如果您不想使用控制台窗口,请使用:

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

答案 1 :(得分:0)

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

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

您还应该使用Process编写方法,例如example

   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);
       }

     }
  }