<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://m.tkk7.com/pengpenglin/ 
    ] 
    posted on 2010-10-19 22:32 小菜毛毛 閱讀(10739) 評論(0)  編輯  收藏 所屬分類: java基礎運用面試
    主站蜘蛛池模板: 中文字幕精品亚洲无线码一区应用| 国产成人免费A在线视频| 亚洲国产精华液网站w| 免费人成大片在线观看播放| 免费在线观看视频a| 日本在线观看免费高清| 久久久久亚洲av成人无码电影| 成人精品综合免费视频| 国产亚洲精品无码专区| 日批视频网址免费观看| 久久精品夜色国产亚洲av| 午夜无码A级毛片免费视频| 亚洲网站在线播放| 免费无码A片一区二三区| 亚洲人成色777777老人头| 免费一级e一片在线播放| caoporn成人免费公开| 亚洲国产高清视频| 四虎在线视频免费观看视频| 亚洲日韩国产欧美一区二区三区| 国产免费一区二区三区VR| 成人精品视频99在线观看免费| 亚洲日韩图片专区第1页| 成人免费激情视频| 亚洲av永久无码一区二区三区 | 亚洲视频免费播放| 国产午夜亚洲精品| 亚洲国产精品成人网址天堂| 成人爽a毛片免费| 亚洲日本在线免费观看| 免费av欧美国产在钱| 又大又硬又粗又黄的视频免费看| 久久精品国产亚洲麻豆| 久草在视频免费福利| 视频一区在线免费观看| 亚洲乱码国产一区三区| 成人午夜大片免费7777| 国产精品免费大片一区二区| 亚洲精品综合久久中文字幕| 成人亚洲网站www在线观看| 免费国产黄网站在线观看可以下载 |