2009-06-04 54 views
13

我有這個類:從Windows命令行調用的jar文件時的System.out不工作

public class Test { 
    public static void main(String[] args) { 
     System.out.println("Hello World!"); 
    } 
} 

我使用Eclipse的「導出到運行的JAR」的功能,使之成爲一個可執行的JAR文件( Test.jar的)。當我在Eclipse中運行這個程序時,它打印出「Hello World!」,但是當我從命令行調用jar文件時,什麼都不會發生。

我已經打過電話的jar文件是這樣的:

test.jar 
test.jar -jar 

沒有任何輸出。

我有另一個程序,也有一個副作用(除了輸出到標準輸出),而副作用正在執行(這告訴我的jar文件是絕對執行),同樣沒有輸出給予命令行。我也試過使用stderr,但這沒有什麼區別。有人知道我能做這個工作嗎?

謝謝!

+0

你怎麼稱呼在命令行的jar文件?你看到什麼輸出(如果有的話)?最有可能的jar文件不執行。 – kgiannakakis 2009-06-04 09:31:31

+0

我更新了我的問題,更清楚地指出,我很確定jar文件正在執行並顯示我如何調用它。 – Jordi 2009-06-04 09:42:28

回答

32

您必須運行使用JAR

java -jar test.jar 

(你的JRE的bin文件夾必須添加到PATH,以獲得該命令從任何地點工作)

注:我知道您創建使用Eclipse的JAR,但您可能想知道how does an executable JAR works

3

當您使用'test.jar'調用該jar時,該應用程序的開始將被移交給註冊的java處理程序,用於處理jar文件不會在命令行的上下文中運行。
默認的jar處理程序不會打開基於控制檯的System。{out,err}文件句柄,因爲這意味着每個啓動的jar文件都有一個cmd樣式窗口,這不是理想的情況。
上一個回答,使用java -jar test.jar會導致它在當前cmd窗口的上下文中運行,因此您將看到輸出。

8

以前的答案是正確的,所以我只會澄清一下「可執行jar」的概念。 在「可執行的jar」中,你只會指定「入口」點(你希望默認執行的主類),所以沒有「windows可執行jar」這樣的東西,

一罐基本上只是一個存檔,您仍然需要用java的javaw.exe這意味着實際推出的jar(Java的罐子your.jar)

事實上,在窗口中,您可能有關聯將在操作系統啓動時雙擊該jar文件,如使用記事本自動打開.txt文件,但不會使.txt成爲可執行文件。

檢查了這一點還有: JAR files revealed

相關問題