<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    小菜毛毛技術分享

    與大家共同成長

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      164 Posts :: 141 Stories :: 94 Comments :: 0 Trackbacks
    javac -classpath的使用: 

    javac:如果當前你要編譯的java文件中引用了其它的類(比如說:繼承),但該引用類的.class文件不在當前目錄下,這種情況下就需要在javac命令后面加上-classpath參數,通過使用以下三種類型的方法 來指導編譯器在編譯的時候去指定的路徑下查找引用類。 

    (1).絕對路徑:javac -classpath c:\junit3.8.1\junit.jar   Xxx.java 
    (2).相對路徑:javac -classpath ..\junit3.8.1\Junit.javr  Xxx.java 
    (3).系統變量:javac -classpath %CLASSPATH% Xxx.java (注意:%CLASSPATH%表示使用系統變量CLASSPATH的值進行查找,這里假設Junit.jar的路徑就包含在CLASSPATH系統變量中) 

    javac 絕對路徑的使用: 

    javac:假設你要編譯的類文件名叫:HelloWorld.java,其完全路徑為:D:\java\HelloWorld.java。但你所在的當前目錄是:C:\Documents and Settings\peng>。如果想在這里執行編譯,會有什么結果呢? 

    (1).C:\Documents and Settings\peng> javac HelloWorld.java 這時編譯器會給出如下的錯誤提示信息: 
    error: cannot read: HelloWorld.java 
    這是因為默認情況下javac是在當前目錄下查找類文件,很明顯這個路徑不是我們存放類文件的地方,所以就會報錯了 
            
    (2).C:\Documents and Settings\peng>javac D:\java\HelloWorld.java 
    這時編譯成功。 
    所以,只要你執行javac命令的目錄不是類文件存放的目錄,你就必須在javac命令中顯式地指定類文件的路徑。 

    java -classpath的使用: 

    java:假設我們的CLASSPATH設置為:D:\peng\java\pro ,在該目錄下有三個文件:HelloWorld.java / HelloWorldExtendsTestCase / HelloWorldExtendsHelloWorld。這三個文件的類聲明分別如下: 

    HelloWorld.java :public class HelloWorld 
    HelloWorldExtendsHelloWorld.java :public class HelloWorldExtendsHelloWorld extends HelloWorld 
    HelloWorldExtendsTestCase.java:public class HelloWorldExtendsTestCase extends junit.framework.TestCase 

          假設我們已經按照上面關于javac -classpath和javac 絕對路徑的使用,順利地完成了三個文件地編譯。現在我們在C:\Documents and Settings\peng>目錄下執行這三個.class文件 

    (1).C:\Documents and Settings\peng>java  HelloWorld 
          Hello World 

    可以看到執行成功。為什么我們在 C:\Documents and Settings\peng>執行命令,JVM能夠找到D:\peng\java\pro\HelloWorld.class文件呢?這是因為我們配置了系統變量CLASSPATH,并且指向了目錄:D:\peng\java\pro 。所以JVM會默認去該目錄下加載類文件,而不需要指定.class文件的絕對路徑了。 
             
    (2).C:\Documents and Settings\peng>java HelloWorldExtendsHelloWorld 
           Hello World 

    可以看到執行成功了。HelloWorldExtendsHelloWorld繼承了HelloWorld類,所以在執行時JVM會先查找在CLASSPATH下是否存在一個HelloWorld.class文件,因為我們已經成功編譯了HelloWorld 類了,所以可以成功執行HelloWorldExtendsHelloWorld.class 
      
    (3).C:\Documents and Settings\peng>java HelloWorldExtendsTestCase 
         Exception in thread "main" java.lang.NoClassDefFoundError: junit/framework/TestCase 

    可以看到程序拋出異常了,提示找不到junit.framework.TestCase文件。為什么同樣在:\peng\java\pro 下,HelloWorldExtendsHelloWorld.class就可以成功執行,而這個就不行了呢?這是因為:            junit.framework.TestCase.class文件并不存在于當前目錄下,所以為了能夠讓程序成功運行,我們必須通過指定CLASSPATH的方式,讓JVM可以找到junit.framework.TestCase這個類,如(4): 

    (4). C:\Documents and Settings\peng>java -classpath %CLASSPATH% HelloWorldExtendsTestCase 
          Hello World 

    總結: 

    (1).何時需要使用-classpath:當你要編譯或執行的類引用了其它的類,但被引用類的.class文件不在當前目錄下時,就需要通過-classpath來引入類 
    (2).何時需要指定路徑:當你要編譯的類所在的目錄和你執行javac命令的目錄不是同一個目錄時,就需要指定源文件的路徑(CLASSPATH是用來指定.class路徑的,不是用來指定.java文件的路徑的) 

    [轉自: 
    http://blog.csdn.net/pengpenglin/ 
    http://www.tkk7.com/pengpenglin/ 
    ] 
    posted on 2010-10-19 22:32 小菜毛毛 閱讀(10739) 評論(0)  編輯  收藏 所屬分類: java基礎運用面試
    主站蜘蛛池模板: 亚洲日韩av无码中文| 亚洲国产AV无码专区亚洲AV | 亚洲女同成人AⅤ人片在线观看 | 亚洲乱色熟女一区二区三区丝袜| www亚洲精品久久久乳| 国产成人免费a在线视频app| 亚洲av成人无码网站…| 日韩毛片无码永久免费看| 亚洲精品国产综合久久久久紧| 在线观看国产情趣免费视频| 朝桐光亚洲专区在线中文字幕| 又爽又高潮的BB视频免费看| 日韩a毛片免费观看| 亚洲乱色熟女一区二区三区丝袜| 久久免费观看国产精品| 亚洲高清美女一区二区三区| 歪歪漫画在线观看官网免费阅读| 亚洲精品无码国产片| 亚洲国产一区二区三区| 久久性生大片免费观看性| 久久亚洲精品人成综合网| 九九九精品成人免费视频| 亚洲大尺度无码无码专线一区 | 亚洲伊人久久大香线蕉综合图片| 日韩精品无码免费专区网站| 亚洲自偷自偷精品| 成人一a毛片免费视频| 午夜成人无码福利免费视频| 亚洲AV无码成人精品区天堂 | 亚洲精品~无码抽插| 18成禁人视频免费网站| 亚洲精品V天堂中文字幕| 亚洲男人的天堂在线va拉文| 亚洲精品在线免费观看视频| 朝桐光亚洲专区在线中文字幕| 亚洲精品无码AV人在线播放| 美女视频黄a视频全免费| 无码精品人妻一区二区三区免费| 国产成人综合亚洲亚洲国产第一页| 91大神免费观看| 亚洲av乱码中文一区二区三区|