path、classpath理解
path、classpath最常見的場景:環境變量配置
path環境變量:設置path的作用是讓操作系統可以找到JDK命令(指定了JDK命令搜索路徑);path環境變量原來Windows里面就有,只需修改一下,使他指向JDK的bin目錄,這樣在控制臺下面編譯、執行程序時就可以直接使用java、javac命令了;
classpath環境變量:告訴類裝載器到哪里去尋找第三方提供的類和用戶定義的類。JVM和其他JDK工具通過依次搜索平臺庫,擴展庫,和類路徑來查找類。
最通俗可以這樣理解:path是操作系統用 ,classpath是java編譯器用。
classpath第二個常見:DOS下執行java代碼的編譯、執行
假設你要編譯的類文件名叫: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命令中顯式地指定類文件的路徑。
如上兩種情況下,classpath就是存放.class等編譯后文件的路徑。
第一種情況下,如果我們可以把HelloWorld.java所在的路徑,設置為classpath,則可以執行成功;
第二種情況下,我們采用了絕對路徑,指定.class編譯文件路徑,編譯成功;
但是,如果執行編譯、運行java程序時,它引用了第三方的jar包,DOS下執行,就需要-classpath來引入第三方jar或類;
案例:
java -classpath 第三方包路徑 XXX
結論:
(1).何時需要使用-classpath:當你要編譯或執行的類引用了其它的類,但被引用類的.class文件不在當前目錄下時,就需要通過-classpath來引入類
(2).何時需要指定路徑:當你要編譯的類所在的目錄和你執行javac命令的目錄不是同一個目錄時,就需要指定源文件的路徑(CLASSPATH是用來指定.class路徑的,不是用來指定.java文件的路徑的)
Eclipse下創建一個普通java工程,默認會創建兩個個文件:.classpath、.project
.project是項目文件,項目的結構都在其中定義,比如lib的位置,src的位置,classes的位置
.classpath的位置定義了你這個項目在編譯時所使用的$CLASSPATH
如果創建的是一個maven工程,則通過pom.xml定義項目編譯時需要使用的第三方jar或類
參考:
http://blog.csdn.net/cheney521/article/details/8672066
http://blog.csdn.net/ghost_t/article/details/5782999
http://casheen.iteye.com/blog/540385
總結
以上是生活随笔為你收集整理的path、classpath理解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js中的constructor
- 下一篇: [转载]克鲁斯堡的147战士