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

Java打包之后讀取Resources下的文件失效原因及解決方法

 更新時(shí)間:2023年12月07日 10:10:34   作者:Huterox  
這篇文章主要給大家介紹了Java打包之后讀取Resources下的文件失效的問(wèn)題分析和解決方法,文中通過(guò)代碼示例和圖文結(jié)合給大家講解非常詳細(xì),需要的朋友可以參考下

環(huán)境

okey,廢話不多說(shuō),發(fā)車了,事情的起因還是源于一道面試筆試機(jī)試題目(這里不能透露太多,但是這道題目很有意思,是一個(gè)算法應(yīng)用,并且這個(gè)算法本身也挺有意思的。寫(xiě)完算法之后,還要放在Linux環(huán)境當(dāng)中進(jìn)行遠(yuǎn)程調(diào)試,說(shuō)明執(zhí)行流程)

那么問(wèn)題就出現(xiàn)在Java打包之后執(zhí)行代碼的時(shí)候出現(xiàn)了問(wèn)題。 在resources下面的話有一個(gè)cars.xlsx文件

起初在我們的 idea環(huán)境下面測(cè)試一點(diǎn)問(wèn)題沒(méi)有,直到,我將其打包,并且仔細(xì)檢查了jar包發(fā)現(xiàn)文件資源也打包進(jìn)去之后,程序還是沒(méi)有讀取到文件的時(shí)候,于是發(fā)現(xiàn)了一個(gè)關(guān)于關(guān)于使用:

類名.class.getResource("/cars.xlsx").getPath();

讀取resources的坑。打包之后,它是無(wú)法讀取到文件的。

Why

發(fā)現(xiàn)問(wèn)題,那么就要解決問(wèn)題,那么問(wèn)題在哪,憑什么不ok呢。 那么竟然如此,那么我們就要look,look,這個(gè)玩意輸出的是什么:

 URL resource = Application.class.getResource("/cars.xlsx");
 String path = resource.getPath();

返回結(jié)果是:

顯然這個(gè)路徑是這個(gè):

這個(gè)是由IDEA自己生成的一個(gè)路徑,而在我們打包的時(shí)候問(wèn)什么讀取呢? 那么這個(gè)時(shí)候我們顯然需要去看看打包之后的情況:

顯然打包到的文件,不在com的同級(jí)目錄下。

ok,這里我們就明白了一個(gè)道理,那就是,之所以找不到,那就是這個(gè)打包之后的文件位置放的不一樣。那么問(wèn)題提出來(lái)了,那么如何解決這個(gè)問(wèn)題

解決

okey,解決的方式很簡(jiǎn)單:

類名.class.getClassLoader().getResourceAsStream("名字");

欸,這樣一看,好像區(qū)別不大啊,為毛這個(gè)可以解決這個(gè)問(wèn)題呢?

對(duì)于Class.getResource:

先獲取文件的路徑path,不以’/‘開(kāi)頭時(shí),默認(rèn)是從此類所在的包下取資源;path以’/'開(kāi)頭時(shí),則是從項(xiàng)目的ClassPath根下獲取資源。所以在當(dāng)前打包之后的 話,我們找不到的,因?yàn)檫@個(gè)文件還在外面一層。

對(duì)于ClassLoader.getResource:

同樣先獲取文件的路徑,path不以’/'開(kāi)頭時(shí),首先通過(guò)雙親委派機(jī)制,使用的逐級(jí)向上委托的形式加載的,最后發(fā)現(xiàn)雙親沒(méi)有加載到文件,最后通過(guò)當(dāng)前類加載classpath根下資源文件。這樣一來(lái)當(dāng)前類沒(méi)找到,但是老爹,老爺,太爺能找到。

在classLoader里面它的一個(gè)過(guò)程是這樣的:

so,寫(xiě)的時(shí)候:

類名.class.getClassLoader().getResourceAsStream("名字");

總結(jié)

陸續(xù)開(kāi)始恢復(fù)技術(shù)學(xué)習(xí),停止考研學(xué)習(xí)??佳泻芎?,但是不是適合所有人。不過(guò)話說(shuō)回來(lái),太久沒(méi)老老實(shí)實(shí)寫(xiě)代碼了,好多東西都忘了,今天上午在做遠(yuǎn)程調(diào)試的時(shí)候,一直連接不上去,防火墻也放行了,結(jié)果搞了半天,發(fā)現(xiàn)策略組沒(méi)放行,無(wú)語(yǔ)住了。

以上就是Java打包之后讀取Resources下的文件失效原因及解決方法的詳細(xì)內(nèi)容,更多關(guān)于Java打包后讀取Resources下文件失效的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java命名規(guī)則詳細(xì)總結(jié)

    Java命名規(guī)則詳細(xì)總結(jié)

    Class名應(yīng)是首字母大寫(xiě)的名詞。命名時(shí)應(yīng)該使其簡(jiǎn)潔而又具有描述性。異常類的命名,應(yīng)以Exception結(jié)尾。Interface的命名規(guī)則與Class相同
    2013-10-10
  • Java實(shí)現(xiàn)在線聊天室(層層遞進(jìn))

    Java實(shí)現(xiàn)在線聊天室(層層遞進(jìn))

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)在線聊天室,層層遞進(jìn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • 2022版IDEA創(chuàng)建一個(gè)maven項(xiàng)目的超詳細(xì)圖文教程

    2022版IDEA創(chuàng)建一個(gè)maven項(xiàng)目的超詳細(xì)圖文教程

    IDEA是用于java語(yǔ)言開(kāi)發(fā)的集成環(huán)境,并且經(jīng)常用于maven、spring、MyBatis等項(xiàng)目的開(kāi)發(fā),下面這篇文章主要給大家介紹了關(guān)于2022版IDEA創(chuàng)建一個(gè)maven項(xiàng)目的超詳細(xì)圖文教程,需要的朋友可以參考下
    2023-02-02
  • Java應(yīng)用CPU使用率過(guò)高排查方式

    Java應(yīng)用CPU使用率過(guò)高排查方式

    這篇文章主要介紹了Java應(yīng)用CPU使用率過(guò)高排查方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • mybatis-plus 如何操作json字段

    mybatis-plus 如何操作json字段

    這篇文章主要介紹了mybatis-plus 如何操作json字段,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • SpringBoot使用攔截器Interceptor實(shí)現(xiàn)統(tǒng)一角色權(quán)限校驗(yàn)

    SpringBoot使用攔截器Interceptor實(shí)現(xiàn)統(tǒng)一角色權(quán)限校驗(yàn)

    角色權(quán)限校驗(yàn),是保證接口安全必備的能力:有權(quán)限才可以操作,所以,一般對(duì)于這種通用邏輯,推薦不與主業(yè)務(wù)邏輯耦合,那么怎么來(lái)解耦,那么本文小編就給大家詳細(xì)講解如何使用攔截器Interceptor實(shí)現(xiàn)統(tǒng)一角色權(quán)限校驗(yàn),需要的朋友可以參考下
    2023-07-07
  • spring boot整合kafka過(guò)程解析

    spring boot整合kafka過(guò)程解析

    這篇文章主要介紹了spring boot整合kafka過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • SpringBoot調(diào)用service層的三種方法

    SpringBoot調(diào)用service層的三種方法

    在Spring?Boot中,我們可以通過(guò)注入Service層對(duì)象來(lái)調(diào)用Service層的方法,Service層是業(yè)務(wù)邏輯的處理層,它通常包含了對(duì)數(shù)據(jù)的增刪改查操作,本文給大家介紹了SpringBoot調(diào)用service層的三種方法,需要的朋友可以參考下
    2024-05-05
  • 詳解在springboot中使用Mybatis Generator的兩種方式

    詳解在springboot中使用Mybatis Generator的兩種方式

    這篇文章主要介紹了詳解在springboot中使用Mybatis Generator的兩種方式,本文將介紹到在springboot的項(xiàng)目中如何去配置和使用MBG以及MBG生成代碼的兩種方式,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2018-11-11
  • java壓縮文件與刪除文件的示例代碼

    java壓縮文件與刪除文件的示例代碼

    這篇文章主要介紹了java壓縮文件與刪除文件的示例代碼,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08

最新評(píng)論

冷水江市| 和田市| 台南县| 泰安市| 霍山县| 垣曲县| 浦县| 定远县| 共和县| 紫金县| 安平县| 文登市| 阳春市| 阳高县| 宁都县| 连平县| 武鸣县| 台南县| 阿尔山市| 曲阜市| 宁南县| 台中市| 安远县| 鹿邑县| 新田县| 红原县| 钦州市| 华容县| 仁怀市| 万州区| 延长县| 大荔县| 渝北区| 伊川县| 修武县| 黄浦区| 阜新市| 怀柔区| 宜川县| 苍梧县| 亳州市|