springboot 后端項目 做某個功能時 需要讀取根目錄下的.doc文件,具體項目中路徑如下:
開始是通過絕對路徑讀取文檔,在本地沒有任何問題。
但是 講項目打成jar包 部署到測試環境發現無論怎樣都讀取不到,然后在本地運行jar包出現同樣的情況。
捕獲異常:java.io.FileNotFoundException
[org.apache.ibatis.session.defaults.DefaultSqlSession@55b40849]
java.io.FileNotFoundException: class path resource [static/****.doc] cannot be resolved to absolute file path because it does not reside in the file system: jar:file:/D:/**/***/target/****-0.0.1-SNAPSHOT.jar!/BOOT-INF/classes!/static/****.doc
原因:
此時運行中的Java程序其實是在讀取jar包中的文件,直接使用下面的方式是不行的:
1
2
3
4
|
常見的獲取路徑寫法: //例子 比如文件路徑 src\main\resources\static\***.doc String path = this .getClass().getClassLoader().getResource( "" ).getPath()+ "/static/***.doc" ; File file = new File(path); |
在java中,如果應用打成jar包后,應用運行后需要讀取本jar包之內的文件,更換寫法:
1
2
|
通過類加載器的getResourceAsStream方法,讓jar讀取到自己的資源文件 InputStream inputStream = this .getClass().getClassLoader().getResourceAsStream( "static/***.doc" ); |
即可。
總結
到此這篇關于springboot項目打成jar包后無法獲取static下的靜態資源文件的問題分析的文章就介紹到這了,更多相關springboot打成jar包無法獲取靜態資源文件內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://blog.csdn.net/PangBo_Cool/article/details/108118950