7

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

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

但它不起作用。我试过谷歌,它给了我使用 ProcessBuilder 的例子,但这也不起作用。

4

3 回答 3

17

使用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);
于 2013-08-01T04:13:38.877 回答
9

第一个建议/建议是使用 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);
于 2013-08-01T04:04:10.313 回答
1

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

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

在哪里

new File("your path to jar")

希望能帮助到你。

谢谢。

于 2015-02-12T05:34:08.797 回答