2011-12-27 127 views
1

爲了方便,我將使用的hello world ...如何創建一個.jar運行命令行應用程序

public class HelloWorld{ 

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

編譯和運行細如你想象。然後,由包含文件Manifest.txt:

Main-Class: HelloWorld 

然後跑:

jar -cfm Hello.jar Manifest.txt *.class 

然而,當我雙擊生成的Hello.jar,沒有任何反應。我希望控制檯至少快速彈出... (我其實有一個更精細的程序,等待輸入)

任何想法,爲什麼這不工作?

它已經開始在任務管理器(Windows),但沒有CMD開通

+0

當您使用'java -jar Hello.jar'在命令行運行程序時會發生什麼? – tscho 2011-12-27 15:46:06

+0

但我想把我的罐子送給沒有電腦的人。我需要雙擊才能工作 – Mead3000 2011-12-27 15:47:55

+0

嗯,我剛剛問過如果從命令行運行它會發生什麼。在這種情況下你有任何錯誤嗎? – tscho 2011-12-27 15:51:02

回答

1

嘗試從命令行執行過程

java -jar /path/to/YourJar.jar 

請確保您有Main-Class進入


另見

+0

好的,但我想把我的罐子發送給沒有電腦的人。我需要雙擊才能工作 – Mead3000 2011-12-27 15:47:18

+0

那麼你需要你的客戶端讓JRE運行那個jar。你還可以設置默認程序來根據操作系統打開'.jar'文件作爲'JRE'。 – 2011-12-27 15:48:42

+0

好....我怎麼才能讓它工作。在窗口 – Mead3000 2011-12-27 15:52:04

2

請確保該Main-Class線清單文件後面跟着一個空行!
很難相信,但規範要求清單文件的每一行(包括最後一行)都以換行符結尾。

編輯:
如果問題只是雙擊,嘗試(假設Windows)中:

assoc .jar=jarfile 
ftype jarfile="<JRE directory>\bin\javaw.exe" -jar "%1" %* 

(使用這些無參數檢查實際設置)

你的客戶會需要JRE來運行Java程序 - 上述設置通常是通過安裝JRE來完成的。

EDIT2:
使用java.exe而不是javaw.exe看到標準的控制檯(如果你的程序不具有GUI)

+0

它是謝謝... – Mead3000 2011-12-27 15:49:29

+0

檢查任務管理器後,它正在啓動一個javaw.exe進程..但沒有cmd正在打開 – Mead3000 2011-12-27 16:04:29

+0

javaw是java無窗口。不會有*窗口*可見;) – jpalm 2011-12-27 16:08:34

0

清單需要被命名爲MANIFEST.MF,它需要駐留在頂層名爲META-INF的目錄。那麼它應該工作。

+0

我很確定那些是在創建時該jar被創建。 jar -tf Hello.jar給了我 – Mead3000 2011-12-27 15:54:05

0

您應該試一試JSmooth。它將您的jar文件包裝到Windows可執行文件中。

相關問題