最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Java中-classpath和路徑的使用

 更新時(shí)間:2017年04月05日 15:39:07   作者:pengpenglin  
本篇文章主要介紹了Java中-classpath和路徑的使用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

javac -classpath的使用:

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

(1).絕對(duì)路徑:javac -classpath c:/junit3.8.1/junit.jar   Xxx.java

(2).相對(duì)路徑:javac -classpath ../junit3.8.1/Junit.javr  Xxx.java

(3).系統(tǒng)變量:javac -classpath %CLASSPATH% Xxx.java (注意:%CLASSPATH%表示使用系統(tǒng)變量CLASSPATH的值進(jìn)行查找,這里假設(shè)Junit.jar的路徑就包含在CLASSPATH系統(tǒng)變量中)

javac 絕對(duì)路徑的使用:

javac:假設(shè)你要編譯的類文件名叫:HelloWorld.java,其完全路徑為:D:/java/HelloWorld.java。但你所在的當(dāng)前目錄是:C:/Documents and Settings/peng>。如果想在這里執(zhí)行編譯,會(huì)有什么結(jié)果呢?

(1).C:/Documents and Settings/peng> javac HelloWorld.java 這時(shí)編譯器會(huì)給出如下的錯(cuò)誤提示信息:
error: cannot read: HelloWorld.java

這是因?yàn)槟J(rèn)情況下javac是在當(dāng)前目錄下查找類文件,很明顯這個(gè)路徑不是我們存放類文件的地方,所以就會(huì)報(bào)錯(cuò)了

(2).C:/Documents and Settings/peng>javac D:/java/HelloWorld.java
這時(shí)編譯成功。

所以,只要你執(zhí)行javac命令的目錄不是類文件存放的目錄,你就必須在javac命令中顯式地指定類文件的路徑。

java -classpath的使用:

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

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

假設(shè)我們已經(jīng)按照上面關(guān)于javac -classpath和javac 絕對(duì)路徑的使用,順利地完成了三個(gè)文件地編譯?,F(xiàn)在我們?cè)贑:/Documents and Settings/peng>目錄下執(zhí)行這三個(gè).class文件

(1).C:/Documents and Settings/peng>java  HelloWorld 

      Hello World

可以看到執(zhí)行成功。為什么我們?cè)?C:/Documents and Settings/peng>執(zhí)行命令,JVM能夠找到D:/peng/java/pro/HelloWorld.class文件呢?這是因?yàn)槲覀兣渲昧讼到y(tǒng)變量CLASSPATH,并且指向了目錄:D:/peng/java/pro 。所以JVM會(huì)默認(rèn)去該目錄下加載類文件,而不需要指定.class文件的絕對(duì)路徑了。

(2).C:/Documents and Settings/peng>Java HelloWorldExtendsHelloWorld

       Hello World

可以看到執(zhí)行成功了。HelloWorldExtendsHelloWorld繼承了HelloWorld類,所以在執(zhí)行時(shí)JVM會(huì)先查找在CLASSPATH下是否存在一個(gè)HelloWorld.class文件,因?yàn)槲覀円呀?jīng)成功編譯了HelloWorld 類了,所以可以成功執(zhí)行HelloWorldExtendsHelloWorld.class

(3).C:/Documents and Settings/peng>java HelloWorldExtendsTestCase
     Exception in thread "main" java.lang.NoClassDefFoundError: junit/framework/TestCase

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

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

      Hello World

總結(jié):

(1).何時(shí)需要使用-classpath:當(dāng)你要編譯或執(zhí)行的類引用了其它的類,但被引用類的.class文件不在當(dāng)前目錄下時(shí),就需要通過(guò)-classpath來(lái)引入類

(2).何時(shí)需要指定路徑:當(dāng)你要編譯的類所在的目錄和你執(zhí)行javac命令的目錄不是同一個(gè)目錄時(shí),就需要指定源文件的路徑(CLASSPATH是用來(lái)指定.class路徑的,不是用來(lái)指定.java文件的路徑的)

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 教你在一分鐘之內(nèi)理解Java Lambda表達(dá)式并學(xué)會(huì)使用

    教你在一分鐘之內(nèi)理解Java Lambda表達(dá)式并學(xué)會(huì)使用

    今天給大家?guī)У奈恼率荍ava8新特性的相關(guān)知識(shí),文章圍繞著如何在一分鐘之內(nèi)理解Java Lambda表達(dá)式并學(xué)會(huì)使用展開(kāi),文中有非常詳細(xì)的介紹,需要的朋友可以參考下
    2021-06-06
  • java中的日期和時(shí)間比較大小

    java中的日期和時(shí)間比較大小

    這篇文章主要介紹了java中的日期和時(shí)間比較大小,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • 淺談Hibernate中的三種數(shù)據(jù)狀態(tài)(臨時(shí)、持久、游離)

    淺談Hibernate中的三種數(shù)據(jù)狀態(tài)(臨時(shí)、持久、游離)

    下面小編就為大家?guī)?lái)一篇淺談Hibernate中的三種數(shù)據(jù)狀態(tài)(臨時(shí)、持久、游離)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • Java IO流操作(PipeInputStream、SequenceInputStream、BufferedInputStream)

    Java IO流操作(PipeInputStream、SequenceInputStream、Buffered

    管道流主要用于線程間通信,分為管道輸入流(PipeInputStream)和管道輸出流(PipeOutputStream),本文介紹了如何通過(guò)管道流進(jìn)行數(shù)據(jù)發(fā)送和接收,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-10-10
  • 使用Java操作MySQL實(shí)現(xiàn)數(shù)據(jù)交互的方法

    使用Java操作MySQL實(shí)現(xiàn)數(shù)據(jù)交互的方法

    JDBC是Java中用于操作數(shù)據(jù)庫(kù)的API,可以為多種關(guān)系數(shù)據(jù)庫(kù)提供統(tǒng)一訪問(wèn),它通過(guò)JDK自帶的JDBC API和數(shù)據(jù)庫(kù)驅(qū)動(dòng)包進(jìn)行操作,實(shí)現(xiàn)數(shù)據(jù)庫(kù)的增刪改查,本文給大家介紹使用Java操作MySQL實(shí)現(xiàn)數(shù)據(jù)交互的方法,感興趣的朋友跟隨小編一起看看吧
    2025-01-01
  • 使用mybatis log plugin插件展示出數(shù)據(jù)庫(kù)查詢語(yǔ)句方式

    使用mybatis log plugin插件展示出數(shù)據(jù)庫(kù)查詢語(yǔ)句方式

    本文介紹了如何安裝和配置MyBatis日志插件,包括集成log4j、配置log4j.xml文件和在application.properties中添加數(shù)據(jù)庫(kù)打印配置,通過(guò)這些步驟,可以在調(diào)試時(shí)查看預(yù)編譯的數(shù)據(jù)庫(kù)語(yǔ)句和實(shí)際查詢語(yǔ)句
    2024-11-11
  • Java中關(guān)于Map四種取值方式

    Java中關(guān)于Map四種取值方式

    這篇文章主要介紹了Java中關(guān)于Map四種取值方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Java中前端傳參含有“+”“=”等特殊字符處理方式

    Java中前端傳參含有“+”“=”等特殊字符處理方式

    這篇文章主要介紹了Java中前端傳參含有“+”“=”等特殊字符處理,比如“+”如果不經(jīng)過(guò)處理,傳到Java后臺(tái)之后,就變成空格了,“=”就直接沒(méi)了,本文對(duì)這一問(wèn)題給大家詳細(xì)講解,需要的朋友可以參考下
    2023-10-10
  • Java 邏輯控制全面詳解

    Java 邏輯控制全面詳解

    程序的邏輯主要分為三種結(jié)構(gòu):順序結(jié)構(gòu)、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu),順序結(jié)構(gòu)的所有的代碼都是從前向后執(zhí)行的。有些時(shí)候順序是由“{}”為界限的,下文將全面詳細(xì)的介紹
    2021-10-10
  • SpringBoot3集成Kafka的方法詳解

    SpringBoot3集成Kafka的方法詳解

    Kafka是一個(gè)開(kāi)源的分布式事件流平臺(tái),常被用于高性能數(shù)據(jù)管道、流分析、數(shù)據(jù)集成和關(guān)鍵任務(wù)應(yīng)用,下面我們就來(lái)看看SpringBoot3是如何集成Kafka的吧
    2023-08-08

最新評(píng)論

孟津县| 长宁县| 和硕县| 从江县| 化德县| 福州市| 扎兰屯市| 凌云县| 寿宁县| 江阴市| 瑞昌市| 象山县| 连州市| 富阳市| 固安县| 南江县| 宣化县| 洛川县| 历史| 凌云县| 龙南县| 丹阳市| 冷水江市| 平陆县| 上犹县| 双流县| 清涧县| 霞浦县| 新乡市| 湘乡市| 绥江县| 亚东县| 寻甸| 天等县| 资源县| 南宫市| 论坛| 砚山县| 庆云县| 定兴县| 冕宁县|