1. 程式人生 > 其它 >如何在寫一個類的時候可以使用到其他類

如何在寫一個類的時候可以使用到其他類

主題:如何在寫一個類的時候可以使用到其他類

這裡要講的是不同包中類的使用

這裡介紹如果下載了一個外部JAR包,如何在寫一個類的時候可以使用到這個JAR包提供的類。
至於為什麼要製作成jar包,我的理解是jar包其實也只是一種壓縮方法,方便傳輸,好管理,不像資料夾會很亂
等等看看jar包的製作過程就知道了

介紹方法之前先介紹一下命令列編譯原始檔和執行主類的class檔案方法
---如何編譯package下的原始檔----------
編譯帶資料夾的原始檔(原始檔沒有package也可以)
javac moon\star\TestOne.java
如果原始檔中沒有申明package而且不是主類,可以直接到資料夾路徑下(劃重點了哈第一是沒有申明package,第二是不是主類)
javac TestOne.java
如果想一次編譯多個原始檔
可以javac moon\star\*.java

---如何執行package下的class檔案-------
執行有包名的主類,主類的位元組碼一定存放在package中,而且必須到package的上一層目錄執行
java moon.star.test

1)主類所在的包和要使用的類所在的包在同一級目錄下
在目錄D:\1000下有一個package,名稱為moon.star,下面有兩個.class檔案,原始檔分別為
package moon.star;
public class TestOne{
public void fTestOne(){
System.out.println("I am a method In TestOne class");
}
}
package moon.star;
public class TestTwo{
public void fTestTwo(){
System.out.println("I am a method In TestTwo class");
}
}
在1000\下新建一個測試類
import moon.star.TestOne;
public class test{
public static void main(String args[]){
TestOne testone = new TestOne();
testone.fTestOne();
}
}
執行結果:I am a method In TestOne class

這裡可以直接使用import引入需要使用到的類,不用修改classpath,也不用把jar包新增到jdk擴充套件中

2)修改系統環境變數classpath

在目錄D:\1000下有一個package,名稱為moon.star,下面有兩個.class檔案,原始檔分別為
package moon.star;
public class TestOne{
public void fTestOne(){
System.out.println("I am a method In TestOne class");
}
}
package moon.star;
public class TestTwo{
public void fTestTwo(){
System.out.println("I am a method In TestTwo class");
}
}
編譯上面的兩個類,開啟windows的高階系統設定,環境變數,在系統變數中的classpath中新增你要引入類所在的包的上一級目錄,這裡是D:\1000
注意:如果要引入的類沒有申明package,那麼在classpath中新增類所在的路徑即可

寫一個測試類
import moon.star.TestOne;
public class test{
public static void main(String args[]){
TestOne testone = new TestOne();
testone.fTestOne();
}
}
執行結果:I am a method In TestOne class
小結:這種方法的類可以不打包成JAR包放在JRE擴充套件下,直接把package的上一級目錄新增到classpath即可;也可以打包成JAR包,在classpath中新增jar包的精確路徑。總的來說,這種方法更加靈活。

3)將檔案複製到JRE擴充套件中(jdk\jre\lib\ext)

將moon這個資料夾複製到JDK安裝目錄下的lib中
編譯報錯test.java:1: 錯誤: 程式包moon.star不存在
import moon.star.TestOne;
^
test.java:4: 錯誤: 找不到符號
TestOne testone = new TestOne();
^
符號: 類 TestOne
位置: 類 test
test.java:4: 錯誤: 找不到符號
TestOne testone = new TestOne();
^
符號: 類 TestOne
位置: 類 test
3 個錯誤
複製到jre\lib\ext中也是報上面的錯

是不是資料夾不行,那就打包成JAR
新建一個hello.mf
Manifest-Version: 1.0
Class: moon.star.TestOne moon.star.TestTwo
Created-By: 1.8
將hello.mf儲存到D:\1000中,進入D:\1000,即包名的上一層目錄,使用jar命令生成Moon.jar
jar cfm Moon.jar hello.mf moon\star\TestOne.class moon\star\TestTwo.class
如果moon\star中只有class檔案也可以使用如下命令:
jar cfm Moon.jar hello.mf moon\star\*.class

把生成的Moon.jar複製到JRE擴充套件資料夾下,jre\lib\ext
執行成功
小結:這種方法需要把package打包成JAR包放在JRE擴充套件目錄中,資料夾不行


擴充套件:
jdk\lib、jdk\jre\lib、jdk\jre\lib\ext、jre\lib這四個資料夾分別是什麼,作用以及區別
請看部落格:https://www.cnblogs.com/mq0036/p/3877901.html