2012-05-04 61 views
5

我想通過雙擊運行Jar文件。雙擊JAR文件無法打開命令提示符

以下是其中唯一的Java類文件。

import java.io.BufferedReader; 
import java.io.InputStreamReader; 
import java.io.IOException; 
public class Sysout{ 
public static void main(String[] args) throws IOException{ 
    System.out.println("Hello World!"); 
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
    String msg = br.readLine(); 
    System.out.println(msg); 
    br.read(); 
} 
} 

而且清單文件具有定義的主類。

使用this鏈接,我通過雙擊批處理文件成功運行了Jar文件。 這將打開命令提示符並運行定義的主類。

但是,如果我直接雙擊Jar文件,沒有任何反應。 我也檢查了this鏈接並將我的.jar關聯到javaw.exe This鏈接也暗示了相同。 也嘗試通過將.jar與java.exe相關聯

會發生什麼情況是命令提示符打開幾分之一秒並消失。

即使我期待用戶輸入一些數據,雙擊操作不會等待用戶輸入任何內容。

問題在哪裏?

+2

當你將.jar和javaw關聯時,它故意不顯示命令窗口!將它關聯到java,你應該看到窗口 – Petesh

+0

@Petesh你可以添加此評論作爲答案?我相信你會得到回報。 – adarshr

+0

我確實與java.exe關聯。但是,窗口僅顯示幾分之一秒。請將更新後的帖子 – whitehat

回答

1

可能是您的.jar文件綁定了任何其他默認程序,右鍵單擊並使用'Java(TM)Platform SE binary'打開。這應該工作,如果有一個可執行的jar文件。

13

當您使用javaw關聯時,它不會創建命令窗口,並會吞併所有System.outSystem.err調用。

您應該重新將您的.jar文件與java二進制文件重新關聯,該二進制文件應該顯示必需的命令窗口。

如果使用了簡單的Open With...選項,它將省略命令行中的-jar選項。

打開管理員命令窗口(這是如果你使用Vista或Windows 7 UAC的啓用需要),這樣做:

assoc .jar=jarfileterm 
ftype jarfileterm="C:\Program Files\Java\jre7\bin\java.exe" -jar "%1" %* 

在你的情況,你應該用一個取代C:\Program Files\Java\jre7\bin\java.exe路徑爲您安裝jre。

當您雙擊此後,它應該正確運行。

您可以添加另一個FTYPE:

ftype jarfile="C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %* 

再次替換路徑與一個最適合您系統的javaw進程二進制文件。通過交替選擇assoc .jar=jarfiletermassoc .jar=jarfile

如果你想運行後周圍保持命令窗口

您現在應該能夠爲窗口之間切換,無窗。罐子,那麼你周圍的java命令的使用cmd /s /k即主叫:

ftype jarfileterm=cmd /s /k ""C:\Program Files\Java\jre7\bin\java.exe" -jar "%1" %*" 
assoc .jar=jarfileterm 

如果這些命令製作的jar文件,然後雙擊將導致命令窗口彈出和堅持。

您不能設置足夠複雜的命令行與Open With...或使用Default Programs,這將允許jar文件運行。如果您已成功嘗試所有這些努力ftypeassoc命令並且它仍然不起作用,那麼您將需要剝離註冊表編輯器。

啓動regedit,並搜索HKEY_CLASSES_ROOT下叫的.jar鍵 - 這將導致在單個值之下叫(Default)具有價值,如果你的FTYPE命令調用的工作,那麼就應該讀jarfileterm。如果它不起作用,那麼你正在查看一個可能由另一個應用程序創建的關聯(我不知道java更新程序是否替換了這些項目,但是如果這樣做,那麼這可能是問題)

您需要在HKEY_CLASSES_ROOT之後再查找此密鑰。它會找到這個條目,它應該包含一個密鑰Shell(即展開文件夾jarfileterm,它應該顯示另一個文件夾Shell),其中包含一個密鑰Open,其中包含一個密鑰Command,該密鑰包含一個(Default)值,該值應包含調用命令啓動.jar文件。此命令應該與您輸入的最後一個ftype jarfileterm=...條目匹配。如果不匹配,則應使其與cmd /s /k或「c:\ program files \ java \ jre7 \ bin \ java.exe」選項之一匹配(具體取決於如果你想在發生錯誤時保留命令窗口)

+0

與jar關聯,以jre/bin提供的java.exe。但是,這確實打開了一秒鐘的命令提示符並消失。我期待使用BufferedReader的用戶輸入。所以它應該等待一些用戶的輸入,然後才能像這樣消失。 – whitehat

+0

如果您使用簡單的「打開方式...」選項,那麼-jar選項將會丟失,導致您遇到的問題。我將用一組可用於從命令行進行配置的選項更新答案 – Petesh

+0

感謝您更新答案。我遵循解決方案設置jarfileterm和jarfile。將jar文件關聯到jar文件。但是,此解決方案不起作用:(同樣的問題仍然存在,命令提示符只顯示幾分之一秒 – whitehat

相關問題