Java開(kāi)發(fā)環(huán)境不再需要配置classpath問(wèn)題
前言
之前發(fā)布了關(guān)于java開(kāi)發(fā)環(huán)境配置的文章,經(jīng)過(guò)與網(wǎng)友的交流,我了解到在jdk1.5以后,java開(kāi)發(fā)環(huán)境配置的時(shí)候,確實(shí)不需要對(duì)classpath進(jìn)行配置,但市面上的書(shū)籍,以及一些博客、還是老一套,繼續(xù)推薦配置classpath,并且關(guān)于不需要配置classpath網(wǎng)絡(luò)上沒(méi)有什么完整細(xì)致,能令人信服的答案,所以我查閱了一些資料以及與別人交流,今天和大家分享一下這些內(nèi)容。
原配置代碼
.;%Java_Home%\bin;%Java_Home%\lib\dt.jar;%Java_Home%\lib\tools.jar
原代碼詳解
Java_Home代表了我們jdk的路徑
- dt.jar是關(guān)于運(yùn)行環(huán)境的類(lèi)庫(kù),主要是用于swing的包,如果不使用可以不配置。
- tools.jar是工具類(lèi)庫(kù),它在編譯和運(yùn)行一個(gè)類(lèi)時(shí)被使用
當(dāng)我們配置classpath后,系統(tǒng)會(huì)根據(jù)我們所配置的classpath加載類(lèi)
例如:在我們使用javac命令編譯程序時(shí),系統(tǒng)加載tools.jar其實(shí)就封裝了下面這樣一條命令
javac XXX.java
java -Classpath=%JAVA_HOME%\lib\tools.jar xx.xxx.Main XXX.java
當(dāng)然tools的功能可不止這一點(diǎn),但是確實(shí)它為我們提供了很多便利
我們不再需要配置classpath了!
在JDK1.5以后,classpath并不是必須配置了,在JDK1.5之前,是沒(méi)有辦法在當(dāng)前目錄下加載類(lèi)的(找不到 JDK目錄下lib文件夾中的.jar文件),所以我們需要通過(guò)配置classpath,但JDK1.5之后,JRE能自動(dòng)搜索目錄下類(lèi)文件,并且加載dt.jar和tool.jar的類(lèi)。
官方文檔解釋?zhuān)↗DK Tools and Utilities)
The class path tells the JDK tools and applications where to find third-party and user-defined classes that are not extensions or part of the Java platform. See The Extension Mechanism at
類(lèi)路徑告訴JDK工具和應(yīng)用程序在哪里可以找到第三方和用戶(hù)定義的類(lèi),這些類(lèi)既不是Java平臺(tái)的擴(kuò)展,也不是Java平臺(tái)的一部分。參見(jiàn)擴(kuò)展機(jī)制
If you upgrade from an earlier release of the JDK, then your startup settings might include CLASSPATH settings that are no longer needed. You should remove any settings that are not application-specific, such as classes.zip. Some third-party applications that use the Java Virtual Machine (JVM) can modify your CLASSPATH environment variable to include the libraries they use. Such settings can remain.
如果您從JDK的早期版本升級(jí),那么您的啟動(dòng)設(shè)置可能包括不再需要的類(lèi)路徑設(shè)置。
您應(yīng)該刪除任何與應(yīng)用程序無(wú)關(guān)的設(shè)置,比如classes.zip。
一些使用Java虛擬機(jī)(JVM)的第三方應(yīng)用程序可以修改類(lèi)路徑環(huán)境變量,以包含它們使用的庫(kù)。這樣的設(shè)置可以保留。
You can change the class path by using the -classpath or -cp option of some Java commands when you call the JVM or other JDK tools or by using the CLASSPATH environment variable. See JDK Commands Class Path Options. Using the -classpath option is preferred over setting the CLASSPATH environment variable because you can set it individually for each application without affecting other applications and without other applications modifying its value. See CLASSPATH Environment Variable.
在調(diào)用JVM或其他JDK工具時(shí),可以使用一些Java命令的-classpath或-cp選項(xiàng),或者使用CLASSPATH環(huán)境變量,來(lái)更改類(lèi)路徑。參見(jiàn)JDK命令類(lèi)路徑選項(xiàng)。
使用-classpath選項(xiàng)優(yōu)于設(shè)置CLASSPATH環(huán)境變量,因?yàn)槟梢詾槊總€(gè)應(yīng)用程序單獨(dú)設(shè)置它,而不影響其他應(yīng)用程序,也不需要其他應(yīng)用程序修改它的值。參見(jiàn)CLASSPATH環(huán)境變量。
通過(guò)官方的文檔說(shuō)明我們可以看到,rt.jar和tool.jar這兩種屬于java平臺(tái)自身的包就不需要添加到classpath中,只有一些第三方類(lèi)或者自定義類(lèi)需要,也并不推薦使用配置CLASSPATH的方法,更推薦使用-classpath選項(xiàng)
總結(jié)
在JDK1.5之后的版本,配置Java環(huán)境變量的時(shí)候我們不再需要配置classpath,只需要配置Java_Home以及path即可!
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
spring cloud alibaba Nacos 注冊(cè)中心搭建過(guò)程詳解
這篇文章主要介紹了spring cloud alibaba Nacos 注冊(cè)中心搭建過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10
Spring Cloud 請(qǐng)求重試機(jī)制核心代碼分析
這篇文章主要介紹了Spring Cloud 請(qǐng)求重試機(jī)制核心代碼分析,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-06-06
java子線程解決獲取主線程的request對(duì)象問(wèn)題
這篇文章主要介紹了java子線程解決獲取主線程的request對(duì)象問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08
SpringMVC整合SSM實(shí)現(xiàn)異常處理器詳解
SpringMVC是一種基于Java,實(shí)現(xiàn)了Web MVC設(shè)計(jì)模式,請(qǐng)求驅(qū)動(dòng)類(lèi)型的輕量級(jí)Web框架,即使用了MVC架構(gòu)模式的思想,將Web層進(jìn)行職責(zé)解耦。基于請(qǐng)求驅(qū)動(dòng)指的就是使用請(qǐng)求-響應(yīng)模型,框架的目的就是幫助我們簡(jiǎn)化開(kāi)發(fā),SpringMVC也是要簡(jiǎn)化我們?nèi)粘eb開(kāi)發(fā)2022-10-10
Spring兩種任務(wù)調(diào)度Scheduled和Async的區(qū)別和應(yīng)用場(chǎng)景詳解
在現(xiàn)代應(yīng)用程序中,任務(wù)調(diào)度是一個(gè)非常普遍的需求,Spring框架提供了兩種主要的方式來(lái)實(shí)現(xiàn)任務(wù)調(diào)度:??Scheduled?? 和 ??Async??,在這篇文章中,我們將詳細(xì)介紹這兩種方式的區(qū)別和應(yīng)用場(chǎng)景,需要的朋友可以參考下2024-12-12
SpringBoot整合FreeMarker的過(guò)程詳解
FreeMarker 是一個(gè)模板引擎,可以將模板與數(shù)據(jù)結(jié)合生成文本輸出,本文給大家介紹SpringBoot整合FreeMarker的過(guò)程,感興趣的朋友一起看看吧2024-01-01
mybatis 為什么千萬(wàn)不要使用 where 1=1
這篇文章主要介紹了mybatis 為什么千萬(wàn)不要使用 where 1=1,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05

