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 的额外性能和复杂性成本!
我尝试在我的 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 的额外性能和复杂性成本!