<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 小菜毛毛 閱讀(10738) 評論(0)  編輯  收藏 所屬分類: java基礎運用面試
    主站蜘蛛池模板: 亚洲妇女无套内射精| a级午夜毛片免费一区二区| 国产精品免费综合一区视频| 美女羞羞视频免费网站| 国产精品亚洲片在线观看不卡| 18禁美女裸体免费网站| 色窝窝亚洲AV网在线观看| 亚洲国产精品无码久久久不卡| 国产精品免费观看| 一级特黄色毛片免费看| 亚洲成人在线电影| 免费国产成人午夜私人影视| 久久精品电影免费动漫| 色婷婷六月亚洲综合香蕉| 亚洲AV午夜成人影院老师机影院| 卡一卡二卡三在线入口免费| 西西人体免费视频| 亚洲av色香蕉一区二区三区 | 亚洲精品无码av片| 亚洲精品国产精品乱码在线观看| 国产一卡2卡3卡4卡无卡免费视频| 一级中文字幕免费乱码专区| 亚洲不卡在线观看| 亚洲成色WWW久久网站| 男人的天堂亚洲一区二区三区| 人妻无码中文字幕免费视频蜜桃| 亚洲香蕉免费有线视频| 亚洲精品无码99在线观看 | 亚洲视频免费观看| 狠狠亚洲狠狠欧洲2019| 免费看大美女大黄大色| 美女内射毛片在线看免费人动物| 黄视频在线观看免费| 亚洲风情亚Aⅴ在线发布| 亚洲男人电影天堂| 国产亚洲精久久久久久无码| 亚洲国产成人精品久久久国产成人一区二区三区综 | 亚洲第一页日韩专区| 在人线av无码免费高潮喷水| 国产精品免费大片| 亚洲五月午夜免费在线视频|