猿问

在Java程序中执行另一个jar

在Java程序中执行另一个jar

我写了几个名为A.jar,B.jar的简单java应用程序。

现在我想编写一个GUI java程序,以便用户可以按下按钮A执行A.jar,按钮B执行B.jar。

此外,我想在我的GUI程序中输出运行时进程详细信息。

有什么建议吗?


大话西游666
浏览 1622回答 3
3回答

慕森王

如果我理解正确,您似乎希望在java GUI应用程序内部的单独进程中运行jar。为此,您可以使用:// Run a java app in a separate system processProcess proc = Runtime.getRuntime().exec("java -jar A.jar");// Then retreive the process outputInputStream in = proc.getInputStream();InputStream err = proc.getErrorStream();缓冲过程输出总是很好的做法。

杨__羊羊

希望这可以帮助:public&nbsp;class&nbsp;JarExecutor&nbsp;{private&nbsp;BufferedReader&nbsp;error;private&nbsp;BufferedReader&nbsp;op;private&nbsp;int&nbsp;exitVal;public&nbsp;void&nbsp;executeJar(String&nbsp;jarFilePath,&nbsp;List<String>&nbsp;args)&nbsp;throws&nbsp;JarExecutorException&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Create&nbsp;run&nbsp;arguments&nbsp;for&nbsp;the &nbsp;&nbsp;&nbsp;&nbsp;final&nbsp;List<String>&nbsp;actualArgs&nbsp;=&nbsp;new&nbsp;ArrayList<String>(); &nbsp;&nbsp;&nbsp;&nbsp;actualArgs.add(0,&nbsp;"java"); &nbsp;&nbsp;&nbsp;&nbsp;actualArgs.add(1,&nbsp;"-jar"); &nbsp;&nbsp;&nbsp;&nbsp;actualArgs.add(2,&nbsp;jarFilePath); &nbsp;&nbsp;&nbsp;&nbsp;actualArgs.addAll(args); &nbsp;&nbsp;&nbsp;&nbsp;try&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;final&nbsp;Runtime&nbsp;re&nbsp;=&nbsp;Runtime.getRuntime(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//final&nbsp;Process&nbsp;command&nbsp;=&nbsp;re.exec(cmdString,&nbsp;args.toArray(new&nbsp;String[0])); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;final&nbsp;Process&nbsp;command&nbsp;=&nbsp;re.exec(actualArgs.toArray(new&nbsp;String[0])); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.error&nbsp;=&nbsp;new&nbsp;BufferedReader(new&nbsp;InputStreamReader(command.getErrorStream())); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.op&nbsp;=&nbsp;new&nbsp;BufferedReader(new&nbsp;InputStreamReader(command.getInputStream())); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Wait&nbsp;for&nbsp;the&nbsp;application&nbsp;to&nbsp;Finish &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;command.waitFor(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.exitVal&nbsp;=&nbsp;command.exitValue(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(this.exitVal&nbsp;!=&nbsp;0)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw&nbsp;new&nbsp;IOException("Failed&nbsp;to&nbsp;execure&nbsp;jar,&nbsp;"&nbsp;+&nbsp;this.getExecutionLog()); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;catch&nbsp;(final&nbsp;IOException&nbsp;|&nbsp;InterruptedException&nbsp;e)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw&nbsp;new&nbsp;JarExecutorException(e); &nbsp;&nbsp;&nbsp;&nbsp;}}public&nbsp;String&nbsp;getExecutionLog()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;error&nbsp;=&nbsp;""; &nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;line; &nbsp;&nbsp;&nbsp;&nbsp;try&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while((line&nbsp;=&nbsp;this.error.readLine())&nbsp;!=&nbsp;null)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;error&nbsp;=&nbsp;error&nbsp;+&nbsp;"\n"&nbsp;+&nbsp;line; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;catch&nbsp;(final&nbsp;IOException&nbsp;e)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;output&nbsp;=&nbsp;""; &nbsp;&nbsp;&nbsp;&nbsp;try&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while((line&nbsp;=&nbsp;this.op.readLine())&nbsp;!=&nbsp;null)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;output&nbsp;=&nbsp;output&nbsp;+&nbsp;"\n"&nbsp;+&nbsp;line; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;catch&nbsp;(final&nbsp;IOException&nbsp;e)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;try&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.error.close(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.op.close(); &nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;catch&nbsp;(final&nbsp;IOException&nbsp;e)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;"exitVal:&nbsp;"&nbsp;+&nbsp;this.exitVal&nbsp;+&nbsp;",&nbsp;error:&nbsp;"&nbsp;+&nbsp;error&nbsp;+&nbsp;",&nbsp;output:&nbsp;"&nbsp;+&nbsp;output;}}
随时随地看视频慕课网APP

相关分类

Java
我要回答