xiaohan

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            1 Posts :: 22 Stories :: 0 Comments :: 0 Trackbacks
          包含包層次的HelloWorld.java

            比如上面的HelloWorld.java修改如下:

             package org.javaresearch;
          public class HelloWorld
          {
          public static void main(String[] args)
          {
          System.out.println("Hello World!");
          }
          }


            編譯時有兩種方法

            1. 直接編譯

            E:\java\src>javac HelloWorld.java

            此時在當前目錄下輸出HelloWorld.class。此時,運行不能使用上面相同的方法,使用:

            E:\java\src>java HelloWorld

            運行時,出現如下錯誤:

            Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld (wrong name: org/javaresearch/HelloWorld)

             從上述錯誤信息你也可以看到,系統可以找到HelloWorld類(因為當前路徑包含在CLASSPATH中,具體為什么會提示wrong name,有興趣的朋友參見Java語言規范),但這個類屬于org.javaresearch包。所以,你要做的就是按照上述包層次,相應的創建目錄層 次,把上面生成的HelloWorld.class放到E:\java\src\org\javaresearch\目錄下。運行(這時候是在包層次的最高層目錄下運行的):

            E:\java\src >java org.javaresearch.HelloWorld

            系統打印出:

            Hello World!

            這兒要注意的是,不能使用java org\javaresearch\HelloWorld來運行,此時同樣會出現如下錯誤:

            Exception in thread "main" java.lang.NoClassDefFoundErrorrg\javaresearch\HelloWorld (wrong name: org/javaresearch/HelloWorld)

            因為類名的書寫是用句點來分割包名的層次的,引用java類庫里面的類也可以這樣寫:java.util.List 類的全名就是這樣的,我們如果在 import 語句里寫上 import java.util.List;
          那么,就不用寫全名了,直接寫 List list = new ...;java 編譯器就可以知道是 List 什么類.但是,由于,java.util 這個包 和 java.sql 這個包都有一個 Date 類,所以,如果 同時導入這兩個包,那么會
          導致java 編譯器不知道引用那個類,有兩種解決辦法:
          a. 用全名來引用類:java.util.Date date1 = ...;java.sql.Date date2 = ...;
          b. 不要導入整個包,只導入所需要的類,如果你同時需要這兩個 Date 類,那么只能寫全名了,如果
          你不是同時需要這兩個類,你可以只導入需要的包:
          比如:import java.util.List; import java.sql.Date;這樣就不會沖突,因為編譯器可以十分清楚的區分
          這個 Date 類是 java.sql 包中的, java.util 包中的 Date 類根本就沒有導入進來。
          這一點,可以按照常理來理解,還是比較好理解的。
            2. 使用 -d <directory>編譯選項

            是不是覺得上面的編譯方法有點麻煩,能不能自動在當前路徑(或任意指定的路徑)下生成包層次呢?有!使用-d <directory>編譯選項就能做到。

            E:\java\src >javac
          (其中的點表示當前目錄。d 和 . 之間有空格, .和后面的java文件名之間也有空格)

            此時,在當前目錄下就生成了一個org\javaresearch目錄,并且輸出的.class文件也在里面。運行:

            E:\java\src >java org.javaresearch.HelloWorld

            系統打?。篐ello World!

            如果你想把生成的類文件集中存放在一個目錄中,比如:E:\java\classes下,那么你首先創建這個目錄,然后編譯時:

            E:\java\src >javac -d E:\java\classes HelloWorld.java

             就可以把生成的類文件放到E:\java\classes目錄下,并且按照包層次相應的創建目錄路徑。你可以在E:\java\classes\org \ javaresearch下找到HelloWorld.class文件。此時使用如下命令可以正確運行(注意如果要用到其它類,請在CLASSPATH中 設好):

            E:\java\classes >java org.javaresearch.HelloWorld
          posted on 2012-10-30 22:02 曉寒 閱讀(198) 評論(0)  編輯  收藏 所屬分類: eclipse
          主站蜘蛛池模板: 晋宁县| 化隆| 玛纳斯县| 镇赉县| 嘉定区| 来凤县| 富蕴县| 阳新县| 江津市| 繁峙县| 桃江县| 雷波县| 天峻县| 榆中县| 上杭县| 永年县| 长治县| 富平县| 梧州市| 蕉岭县| 汉川市| 常熟市| 久治县| 中西区| 长寿区| 青河县| 太康县| 正定县| 屏南县| 独山县| 武邑县| 新野县| 时尚| 静海县| 芮城县| 阿尔山市| 开封市| 屏山县| 剑河县| 黄陵县| 五指山市|