2014-01-15 131 views
1

我有一個可運行的JAR,我想從另一個Java應用程序調用。我曾嘗試這種解決方案如何從java應用程序執行可運行JAR

[鏈接] how to run a java executable jar in another java program

我能夠執行JAR,但似乎是線程都處於僵局,它永遠不會生成輸出。任何人都可以幫我一下嗎?

+0

這是正確的方式,因爲它顯示在鏈接中。如果您單獨運行它,那麼該jar是否正常運行? – Dejan

+0

是的,如果我從bat文件運行Jar,它工作正常。 – user82504

+0

如果我從java程序運行Jar,jar運行良好。但是在需要產生輸出的那一端,它停滯不前。 – user82504

回答

1

您可以使用來自普通Java的ProcessBuilder或使用來自ZeroTurnaround的庫,如zt-exec。第二個工具可以讓你輕鬆地添加例如執行超時,設置出口值等

在第一種情況下,它會看起來像:

Process p = new ProcessBuilder("java", "-jar myjar.jar").start(); 
p.start(); 

在第二:

new ProcessExecutor().command("java -jar myjar.jar").execute(); 
+0

我試過這個,但它的工作原理和應用程序掛起。 – user82504

+0

通過應用程序你的意思是執行jar或你的應用程序正在調用執行? –

+0

這是我的應用程序正在調用jar。實際上,應用程序無法從JAR中取回控制權,並且它一直在等待。而且,我在調試窗口看到有兩個線程。我在上面提到的鏈接中的線程是DestroyVM線程。他們從來沒有得到控制。 – user82504

0

另一種方法,如果你知道該方法有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 
    } 
} 
0

我已經找到了解決辦法。我已經更新了我的JDK,然後調用該jar並運行。謝謝大家的幫助和時間。

相關問題