【问题标题】:Run a jar File from java program从java程序运行一个jar文件
【发布时间】:2013-08-01 20:14:51
【问题描述】:

我正在尝试从另一个 Java 程序执行 jar 文件。我正在使用以下代码:

      try {
          Runtime runtime = Runtime.getRuntime();
          runtime.exec("path upto jar");
      } catch (Exception ex) {
          JOptionPane.showMessageDialog(null, "Exception occured" + ex);
      }

但它不起作用。我尝试了 google,它给了我使用 ProcessBuilder 的示例,但这也不起作用。

【问题讨论】:

  • 您对exec 的论证是否包含必要的[path]/java -jar 位?
  • 并使用ProcessBuilder,它可以更好地处理命令/参数中的空间

标签: java jar runtime executable-jar


【解决方案1】:

使用 ProcessBuilder(java.lang.ProcessBuilder) 将解决您的问题。语法如下——

ProcessBuilder pb = new ProcessBuilder("java", "-jar", "absolute path upto jar");
Process p = pb.start();

您可以将输入/输出/错误重定向到/从文件中,如下所示

File commands = new File("absolute path to inputs file");
File dirOut = new File("absolute path to outputs file");
File dirErr = new File("absolute path to error file");

dirProcess.redirectInput(commands);
dirProcess.redirectOutput(dirOut);
dirProcess.redirectError(dirErr);

【讨论】:

    【解决方案2】:

    第一个建议/建议是使用 ProcessBuilder 而不是 Runtime。您可以尝试以下方法:

    ProcessBuilder pb = new ProcessBuilder("java", "-jar", "./jarpath/yourjar.jar");
    Process p = pb.start();
    BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
    String s = "";
    while((s = in.readLine()) != null){
        System.out.println(s);
    }
    int status = p.waitFor();
    System.out.println("Exited with status: " + status);
    

    【讨论】:

    • 如果while循环随着进程终止,真的需要waitFor()吗?
    【解决方案3】:

    您可以只使用这一行代码从任何您想要的地方运行一个 jar 文件。

        Desktop.getDesktop().open(new File("D:/FormsDesktop.jar"));
    

    在哪里

    new File("your path to jar")
    

    希望对你有帮助。

    谢谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-30
      • 2013-07-15
      • 1970-01-01
      • 2011-06-23
      • 1970-01-01
      • 1970-01-01
      • 2014-06-07
      相关资源
      最近更新 更多