2016-12-25 462 views
0

我尝试在我的Java应用程序中执行外部jar。 .jar在我的java-package(“gui”)中。 我尝试:ProcessBuilder:在java包中启动.jar

  String filepath = this.getClass().getResource("ServerRSS.jar").getPath(); 
      ProcessBuilder pb = new ProcessBuilder("java", filepath); 

的System.out.println(文件路径);结果在:

/C:/Users/hox/workspace/PraktikumProg/bin/gui/ServerRSS.jar 

我的程序无法启动。这个问题可能是C之前的斜线吗?

编辑: 的解决方案是:

URL filepath = this.getClass().getResource("ServerRSS.jar"); 
ProcessBuilder pb; 
pb = new ProcessBuilder("java", "-jar", new File(filepath.toURI()).toString()); 
Process p = pb.start(); 
+0

请注意,我增强了我的答案。请给予一些反馈,如果有帮助! – GhostCat

回答

1

首先让你的命令的工作...只需在命令行上。

然后只能使用ProcessBuilder从Java内部运行它。

简单的回答可能是:在调用java时使用-jar

java someJar.jar 

不起作用!

是的,这个斜杠很重要。你只需要一个完全正确的文件路径。

最后:你真的确定要启动一个新的JVM,以便在某个类中运行主要方法吗?您会发现,您可以在当前的JVM中执行此操作,而无需使用第二个JVM的额外性能和复杂性成本!