Java應用程式在執行時,需要將使用到的類別的位元組載入到內存,因此,對字節碼檔案所在的位置有一定要求,一般分為以下四種情形:
1. 使用目前應用程式所在目錄中沒有包名的類別:
對於目前應用程式所在目錄中沒有包名的類,可直接載入使用。
2. 使用Java運行環境中類別庫中的類別:
Java運行環境所提供的類別庫中的類別都是有包名的,應用程式必須使用import語句引入對應包中的類別。
3. 使用應用程式目前目錄的子孫目錄中的類別:
應用程式目前目錄下的子孫目錄可以作為使用者自訂套件的包名,具有該套件名稱的類別必須存放在這些子孫目錄中,應用程式就可以使用import語句引入使用者自訂套件中的類別。
4. 使用Java運行環境擴充中的類別:
我們可以用jar.exe指令把一些類別的字節碼檔案壓縮成一個jar文件,然後將這個jar檔案存放到Java運作環境的擴充功能中,即將該jar檔存放在JDK安裝目錄的jrelibext資料夾中,這樣,Java應用程式就可以使用這個jar檔案中的類別來建立物件。
有包名的類
假設下列TestOne和TestTwo類別的套件名為moon.star。
TestOne.java
packagemoon.star;//套件語句publicclassTestOne{publicvoidfTestOne(){System.out.println(IamamethodInTestOneclass);}}
TestTwo.java
packagemoon.star;//套件語句publicclassTestTwo{publicvoidfTestTwo(){System.out.println(IamamethodInTestTwoclass);}}
將TestOne.java和TestTwo.java儲存到C:1000moonstar目錄中,然後進入該目錄分別編譯這兩個原始檔。
現在,我們將C:1000moonstar目錄中的TestOne.class和TestTwo.class壓縮成一個jar檔:Jerry.jar。
首先,我們寫一個清單檔:hello.mf(Manifestfiles)。
hello.mf
Manifest-Version:1.0Class:moon.star.TestOnemoon.star.TestTwoCreated-By:1.6
將hello.mf儲存到C:1000目錄中,為了使用jar指令來產生一個jar的文件,首先需要進入到C:1000目錄,即進入包名的上一層目錄,然後使用jar指令來生成一個名字為Jerry.jar的文件。
C:1000>jarcfmJerry.jarhello.mfmoonstarTestOne.classmoonstarTestTwo.class
若C:1000moonstar只有TestOne.class和TestTwo.class兩個字節碼文件,也可使用jar指令。
C:1000>jarcfmJerry.jarhello.mfmoonstar*.class
最後,將jar指令在C:1000目錄中產生的Jerry.jar檔複製到Java運作環境的擴充中,即將該Jerry.jar檔存放在JDK安裝目錄的jrelibext資料夾中。
無包名的類
如果TestOne和TestTwo類別沒有包名,只要將TestOne.java和TestTwo.java儲存到C:1000中,編譯得到字節碼檔。寫一個清單文件,然後儲存到C:1000中,進入到C:1000目錄,使用jar指令。
C:1000>jarcfmJerry.jarhello.mfTestOne.classTestTwo.class
若C:1000只有TestOne.class和TestTwo.class兩個字節碼文件,也可使用jar指令。
C:1000>jarcfmJerry.jarhello.mf*.class
最後,將jar指令在C:1000目錄中產生的Jerry.jar檔複製到JDK安裝目錄的jrelibext資料夾中,應用程式就可以直接使用Jerry.jar檔中的TestOne.class和TestTwo .class。