我有一个可运行的JAR,我想从另一个Java应用程序调用。我曾尝试这种解决方案如何从java应用程序执行可运行JAR
[链接] how to run a java executable jar in another java program
我能够执行JAR,但似乎是线程都处于僵局,它永远不会生成输出。任何人都可以帮我一下吗?
我有一个可运行的JAR,我想从另一个Java应用程序调用。我曾尝试这种解决方案如何从java应用程序执行可运行JAR
[链接] how to run a java executable jar in another java program
我能够执行JAR,但似乎是线程都处于僵局,它永远不会生成输出。任何人都可以帮我一下吗?
您可以使用来自普通Java的ProcessBuilder或使用来自ZeroTurnaround的库,如zt-exec。第二个工具可以让你轻松地添加例如执行超时,设置出口值等
在第一种情况下,它会看起来像:
Process p = new ProcessBuilder("java", "-jar myjar.jar").start();
p.start();
在第二:
new ProcessExecutor().command("java -jar myjar.jar").execute();
另一种方法,如果你知道该方法有main
方法,你的程序调用方法形式为main
。
Example.java
public void test() {
String[] starr = <- if you have some parameter
ProgramInJar.main(starr);
}
mytest.jar
public class ProgramInJar {
public static void main(String[] args) {
// your operation
}
}
我已经找到了解决办法。我已经更新了我的JDK,然后调用该jar并运行。谢谢大家的帮助和时间。
这是正确的方式,因为它显示在链接中。如果您单独运行它,那么该jar是否正常运行? – Dejan
是的,如果我从bat文件运行Jar,它工作正常。 – user82504
如果我从java程序运行Jar,jar运行良好。但是在需要产生输出的那一端,它停滞不前。 – user82504