Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从java程序运行jar文件_Java_Jar_Runtime_Executable Jar - Fatal编程技术网

从java程序运行jar文件

从java程序运行jar文件,java,jar,runtime,executable-jar,Java,Jar,Runtime,Executable Jar,我正在尝试从另一个Java程序执行jar文件。我正在使用以下代码: try { Runtime runtime = Runtime.getRuntime(); runtime.exec("path upto jar"); } catch (Exception ex) { JOptionPane.showMessageDialog(null, "Exception occured" + ex); }

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

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

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

第一个建议/建议是使用ProcessBuilder而不是运行时。以下是您可以尝试的内容:

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

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

只要使用这一行代码,就可以从任何需要的地方运行jar文件

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

希望能有帮助


谢谢。

您的
exec
参数是否包含必要的
[path]/java-jar
位?如果使用
ProcessBuilder
,它可以更好地处理命令/参数中的空间
new File("your path to jar")