从Java程序中运行一个jar文件

8

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

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

但是它不起作用。 我尝试了谷歌,并给出了使用ProcessBuilder的示例,但那也不起作用。


你的 exec 参数中是否包含必要的 [path]/java -jar 部分? - chrylis -cautiouslyoptimistic-
使用 ProcessBuilder,它可以更好地处理命令/参数中的空格。 - MadProgrammer
3个回答

20

使用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);

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

如果while循环随着进程的终止而终止,那么真的需要waitFor()吗? - Sam Ginrich

2
您可以使用以下一行代码从任何地方运行jar文件。
    Desktop.getDesktop().open(new File("D:/FormsDesktop.jar"));

在哪里

new File("your path to jar")

希望这有所帮助。 谢谢。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接