初學java的時候對它的包機制總是懵懵懂懂的,也經常因為對包的理解不當而出現一些莫名其妙的錯誤,下面簡單總結一下偶在java學習過程中對於包的理解和認識.,不當之處,還請指正.
首先,建立目錄D:/Test,在下面建立一個很簡單的java檔案,First.java;
package zhukai;
/**
this is a test
@author zhukai
@version 1.1
*/
public class First{
/** static mothod
@param args an array
*/
public static void main(String args[]){
System.out.println("Test");
}
}
編譯之D:/Test>javac First.java
運行D:/Test>java First,不出意外的話會出現如下的錯誤:
Exception in thread "main"java.lang.NoClassDefFoundError: First (wrong name: zhukai/First),解決辦法如下:在Test目錄下面建立目錄zhukai,然後把剛才產生的class檔案移過去,運行D:/Test>java zhukai.First,運行成功,輸出"Test".(注意:這個時候即使你進入/zhukai運行java First也會報錯).當然你也可以使用javac的-d參數來自動產生package目錄,兩種方法的效果是一樣的.
這時可能就有人要問了,不要那個package不就得了,省的這麼麻煩.我們首先看這樣一種情況,在一個BBS的web應用程式中,經常涉及到刪除文章的操作,而不的角色所擁有的權利是不一樣的.比如說,普通使用者只能刪除自己的文章,而斑竹則可以刪除該版面上的任何一個文章.對於編寫javabean的程式員而言,可能傾向於把執行這兩個操作的java檔案都明明為delete.java,這個時候就會出現明明衝突的問題,而這也是為什麼會出現package的原因了.package出現的初衷就是為了保證類名的唯一性.在上面的情況中,我們就可以寫一個admin.delete和一個user.delete來避免命名的衝突.