Java項(xiàng)目中classpath類路徑是什么
Spring Boot
一、簡(jiǎn)介
classpath
類路徑在 Spring Boot 中既指程序在打包前的/java/
目錄加上/resource
目錄,也指程序在打包后生成的/classes/
目錄。兩者實(shí)際上指的是同一個(gè)目錄,里面包含的文件內(nèi)容一模一樣。
二、獲取classpath路徑
以下兩種方式均可,但是并不能用于生產(chǎn)環(huán)境,因?yàn)楫?dāng)我們把程序打成jar
包時(shí),由于jar
包本質(zhì)是壓縮文件,無(wú)法被直接打包,所以生成的路徑中會(huì)含有感嘆號(hào)!
導(dǎo)致路徑定位錯(cuò)誤,例如:jar!/BOOT-INF/classes!/application.yml (No such file or directory)
// 方式一: String path1 = ClassUtils.getDefaultClassLoader().getResource("").getPath(); // 方式二: String path2 = ResourceUtils.getURL("classpath:").getPath();
此時(shí),如果我們想要讀取jar
包內(nèi)的文件,可以采取第 3 種方式不讀取路徑、直接讀取文件流:
// 方式 三 InputStream input = ClassUtils .getDefaultClassLoader() .getResourceAsStream("application.yml"); Reader reader = new InputStreamReader(input, "UTF-8");
三、獲取項(xiàng)目路徑
上面介紹了如何獲取classpath
路徑之后,其實(shí)有時(shí)候我們會(huì)發(fā)現(xiàn)自己只想獲取當(dāng)前程序所在路徑或jar
包所在路徑,那么此時(shí)又應(yīng)該如何獲取呢?
// 方式一: File file = new File("."); File path1 = file.getAbsoluteFile(); // 方式二: String path2 = System.getProperty("user.dir");
兩者方式并無(wú)優(yōu)劣之分,具體使用哪種取決于你的愛好~
classpath 和 classpath* 區(qū)別:
classpath:只會(huì)到你的class路徑中查找找文件;
classpath*:不僅包含class路徑,還包括jar文件中(class路徑)進(jìn)行查找.
總結(jié)
到此這篇關(guān)于Java項(xiàng)目中classpath類路徑是什么的文章就介紹到這了,更多相關(guān)classpath類路徑是什么內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MyBatis?resultMap?id標(biāo)簽的錯(cuò)誤使用方式
這篇文章主要介紹了MyBatis?resultMap?id標(biāo)簽的錯(cuò)誤使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01MyBatis Mapper XML中比較操作符轉(zhuǎn)義問(wèn)題解決
在使用MyBatis編寫Mapper XML時(shí),有時(shí)會(huì)遇到比較操作符需要進(jìn)行轉(zhuǎn)義的情況,本文主要介紹了MyBatis Mapper XML中比較操作符轉(zhuǎn)義問(wèn)題解決,具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01Java必會(huì)的Synchronized底層原理剖析
synchronized作為Java程序員最常用同步工具,很多人卻對(duì)它的用法和實(shí)現(xiàn)原理一知半解,以至于還有不少人認(rèn)為synchronized是重量級(jí)鎖,性能較差,盡量少用。但不可否認(rèn)的是synchronized依然是并發(fā)首選工具,本文就來(lái)詳細(xì)講講2022-10-10記錄jdk21連接SQLServer因?yàn)門LS協(xié)議報(bào)錯(cuò)問(wèn)題
在使用Druid連接池連接SQL Server時(shí),可能會(huì)遇到因TLS版本不匹配導(dǎo)致的連接失敗問(wèn)題,具體表現(xiàn)為客戶端使用TLS1.3或TLS1.2,而SQL Server僅支持TLS1.0,導(dǎo)致無(wú)法建立安全連接,解決方法是修改JDK的安全配置,啟用TLS1.02024-10-10spring boot教程之產(chǎn)生的背景及其優(yōu)勢(shì)
這篇文章主要介紹了spring boot教程之產(chǎn)生的背景及其優(yōu)勢(shì)的相關(guān)資料,需要的朋友可以參考下2022-08-08Java學(xué)習(xí)基礎(chǔ)之安裝JDK/配置JDK環(huán)境&IEDA工具安裝
這篇文章主要介紹了Java學(xué)習(xí)基礎(chǔ)系列文章的第一篇,主要內(nèi)容是安裝JDK/配置JDK環(huán)境&IEDA工具安裝的相關(guān)資料,需要的朋友可以參考下2020-02-02