CLASSPATH 以及包和目錄結構的關係 (轉)

amyz發表於2007-10-17
CLASSPATH 以及包和目錄結構的關係 (轉)[@more@]

  CLASSPATH 中包含的的路徑中,每一個都是 package 的根,而在此目錄下的所有子目錄都可以成為 package,條件是,該目錄下有封裝在該 package 中的類。

  說起來有些抽象,不太好懂,還是舉個例子:

set CLASSPATH=%_HOME%librt.jar;C:java

  C:java 的結構如下:

C:java |-- myeditor |-- test | |-- | `-- `-- hello

  那麼,C:java 就是一個 package 的根,在這個目錄下寫的 Java 都不需要使用 package 語句。而 test 目錄就是 package 根下的一個子包 test,因為寫在 test 中的 java 程式就需要寫一個 package 語句,如下

/** * C:javaTest.java * @author fancy */ pacakge test; ......

  而 test 下的 xml 又是 test 的子包,其中的 java 程式應該如下:

/** * C:javatestTestXml.java * @author fancy */ pacakge test.xml; ......

  當然,在 test 和 xml 目錄中的 java 程式也可以不寫 package 語句。如果這樣,需要在 CLASSPATH 中加上一個當前目錄 (.),如

set CLASSPATH=%JAVA_HOME%jrelibrt.jar;C:java;.

  然後轉到相應目錄下,如

C:>cd javatest

  再執行

C:Javatest>java Test

  這樣也可以,因為 “.” 表示當前目錄是一個包的根。

  使用包結構最典型的一個例子就是,將一個工程或專案 (Project) 作為一個包的根,然後再根據需要劃分子包,如上例目錄結構中,myeditor 就是一個小專案,可以作為一個包,假如在其中寫一個 MyEdtior 主類,那麼,完成之後應該使用如下語句執行:

java myeditor.MyEdtior

  test 中根據測試程式的種類分出了 xml 包和 swing 包,那麼相應的執行就是:

java test.Test java test.xml.Test java test.swing.Test

  這裡的三個 Test 類是分別寫在 C:javatest、C:javatestxml 和 C:javatestswing 中的,在程式的一開始分別有如下申明

/** C:javatestTest.java */ package test; ... /** C:javatestxmlTest.java */ package test.xml; ... /** C:javatestswingTest.java */ package test.swing; ...

  最後還有一點需要注意:注意名和目錄名的大小寫,檔名的大小寫會影響類名的大小寫,而目錄名的大小寫會影響包名的大小寫。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-977212/,如需轉載,請註明出處,否則將追究法律責任。

相關文章