ProcessBuilder:启动 java 包中的 .jar

ProcessBuilder: Start .jar in java package

我尝试在我的 java 应用程序中执行外部 jar。 .jar 在我的 java-package ("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();

首先让您的命令正常工作...只需在命令行上即可。

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

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

java someJar.jar

无效!

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

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