ProcessBuilder:在java包中启动.jar

时间:2016-12-25 08:36:03

标签: java jar package processbuilder getresource

我尝试在我的java应用程序中执行外部jar。 .jar在我的java包中(" gui")。 我试过了:

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

1 个答案:

答案 0 :(得分:1)

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

然后尝试使用ProcessBuilder在Java中运行它。

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

java someJar.jar

不起作用!

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

最后:你真的确定要启动新的JVM以便在某个类中运行main方法吗?你知道,你可以在当前的JVM中做到这一点 - 没有使用第二个JVM的额外性能和复杂性成本!