2013-05-12 57 views
3

我們鍵入java <programname>運行Java程序,其中<programname>表示從我的源代碼編譯的Java類文件。爲什麼我不能通過輸入<programname>來啓動程序?按類名運行程序

+0

如果您非常絕望,那麼您可以創建一個具有「java程序」的參數化批處理文件,並將該參數作爲程序 – 2013-05-12 16:37:55

回答

9

Java被編譯爲字節碼而不是本地可執行代碼。由於操作系統和生成的字節碼之間沒有自動關聯,因此您需要本地解釋器來運行代碼。

+0

傳遞給字節碼。每種現代可執行格式都有一個解釋器(例如ld-linux.so.2),在執行程序之前需要解釋許多元數據(二進制格式,依賴關係......)。只支持主機操作系統缺少構建與java的區別。 – josefx 2013-05-12 16:43:06

+0

教學操作系統如何處理.class文件(默默地調用解釋器)沒有任何錯誤。出於某種原因,它只是沒有完成的Windows。 – 2013-05-12 16:48:23

+0

C python顯然也被解釋我相信我們都同意,但沒有這些限制(在Windows上,您必須更改設置)。其實從來沒有想過如果這也可以爲Java程序完成.. – Voo 2013-05-12 16:51:06

4

系統需要一個本地可執行命令,它不理解.class文件。

對於Java,本機可執行文件在JRE安裝的/ bin /目錄中提供。

類文件在JVM上運行,而不是在底層系統上運行。這個「java」可執行文件啓動JVM並將提供的類加載到它。

1

Java程序總是在JVM中運行,「java」命令調用JVM。 JVM是一臺虛擬機,意味着物理環境中的邏輯機器,這意味着您的程序名稱是對虛擬機(邏輯機器)的直接命令。在java程序中編譯爲字節碼,這是邏輯機器(JVM)的機器碼,所以它可以直接在虛擬機(JVM)上執行,而不是在操作系統上執行。你的Java程序不是你的操作系統的機器代碼,這就是爲什麼你不能直接通過在程序提示符下放置程序名來運行你的Java程序。

0

Windows中沒有「膠水」(由Microsoft提供),因此它知道如何將command映射爲執行command.class。因此你必須自己進行調用。

請注意,某些Java安裝允許點擊jar文件(這是zip文件持有類文件)來運行應用程序。

1

因爲.class文件不被識別爲Windows上的可執行文件。然而,程序java是一個.exe(所以Windows知道它是一個可執行文件),所以你輸入java來啓動java程序並告訴它打開你的.class文件。