Java應(yīng)用程序在運(yùn)行時,需要將使用到的類的字節(jié)加載到內(nèi)存,因此,對字節(jié)碼文件所在的位置有一定要求,一般分為以下四種情形:
1. 使用當(dāng)前應(yīng)用程序所在目錄中沒有包名的類:
對于當(dāng)前應(yīng)用程序所在目錄中沒有包名的類,可直接加載使用。
2. 使用Java運(yùn)行環(huán)境中類庫中的類:
Java運(yùn)行環(huán)境所提供的類庫中的類都是有包名的,應(yīng)用程序必須使用import語句引入相應(yīng)包中的類。
3. 使用應(yīng)用程序當(dāng)前目錄的子孫目錄中的類:
應(yīng)用程序當(dāng)前目錄下的子孫目錄可以作為用戶自定義包的包名,具有該包名的類必須存放在這些子孫目錄中,應(yīng)用程序就可以使用import語句引入用戶自定義包中的類。
4. 使用Java運(yùn)行環(huán)境擴(kuò)展中的類:
我們可以使用jar.exe命令把一些類的字節(jié)碼文件壓縮成一個jar文件,然后將這個jar文件存放到Java運(yùn)行環(huán)境的擴(kuò)展中,即將該jar文件存放在JDK安裝目錄的jre\lib\ext文件夾中,這樣,Java應(yīng)用程序就可以使用這個jar文件中的類來創(chuàng)建對象。
有包名的類
假設(shè)下列TestOne和TestTwo類的包名為moon.star。
TestOne.java
package moon.star; //包語句 public class TestOne { public void fTestOne() { System.out.println("I am a method In TestOne class"); } }
TestTwo.java
package moon.star; //包語句 public class TestTwo { public void fTestTwo () { System.out.println("I am a method In TestTwo class"); } }
將TestOne.java和TestTwo.java保存到C:1000\moon\star目錄中,然后進(jìn)入該目錄分別編譯這兩個源文件。
現(xiàn)在,我們就將C:1000\moon\star目錄中的TestOne.class和TestTwo.class壓縮成一個jar文件:Jerry.jar。
首先,我們編寫一個清單文件:hello.mf(Manifestfiles)。
hello.mf
Manifest-Version: 1.0 Class: moon.star.TestOne moon.star.TestTwo Created-By: 1.6
將hello.mf保存到C:\1000目錄中,為了使用jar命令來生成一個jar的文件,首先需要進(jìn)入到C:\1000目錄,即進(jìn)入包名的上一層目錄,然后使用jar命令來生成一個名字為Jerry.jar的文件。
C:\1000> jar cfm Jerry.jar hello.mf moon\star\TestOne.class moon\star\TestTwo.class
如果C:\1000\moon\star只有TestOne.class和TestTwo.class兩個字節(jié)碼文件,也可使用jar命令。
C:\1000> jar cfm Jerry.jar hello.mf moon\star\*.class
最后,將jar命令在C:\1000目錄中生成的Jerry.jar文件復(fù)制到Java運(yùn)行環(huán)境的擴(kuò)展中,即將該Jerry.jar文件存放在JDK安裝目錄的jre\lib\ext文件夾中。
無包名的類
如果TestOne和TestTwo類沒有包名,只需將TestOne.java和TestTwo.java保存到C:\1000中,編譯得到字節(jié)碼文件。編寫一個清單文件,然后保存到C:\1000中,進(jìn)入到C:\1000目錄,使用jar命令。
C:\1000> jar cfm Jerry.jar hello.mf TestOne.class TestTwo.class
如果C:\1000只有TestOne.class和TestTwo.class兩個字節(jié)碼文件,也可使用jar命令。
C:\1000> jar cfm Jerry.jar hello.mf *.class
最后,將jar命令在C:\1000目錄中生成的Jerry.jar文件復(fù)制到JDK安裝目錄的jre\lib\ext文件夾中,應(yīng)用程序就可以直接使用Jerry.jar文件中的TestOne.class和TestTwo.class。
C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點(diǎn)擊了解:
一點(diǎn)編程也不會寫的:零基礎(chǔ)C語言學(xué)練課程
解決困擾你多年的C語言疑難雜癥特性的C語言進(jìn)階課程
從零到寫出一個爬蟲的Python編程課程
只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程
信息學(xué)奧賽或C++選手的 必學(xué)C++課程
藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競賽課入門課程
手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程