日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

解决Java Web项目无法读取配置文件问题

發(fā)布時間:2025/3/20 java 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 解决Java Web项目无法读取配置文件问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

錯誤描述

報錯信息如下圖所示,Web應(yīng)用后臺在讀取配置文件的時候,系統(tǒng)找不到指定的路徑。

這是Java Web項(xiàng)目的目錄結(jié)構(gòu):

這是報錯部分的代碼:

static {try {Properties prop = new Properties();//讀取配置文件InputStream is = new InputStream("src/main/resources/db.properties");//加載配置文件prop.load(is);driver = prop.getProperty("driver");url = prop.getProperty("url");user = prop.getProperty("user");password = prop.getProperty("password");} catch (Exception e) {e.printStackTrace();} }

做出的嘗試:

  • 一般遇到這樣的問題的時候,第一反應(yīng)覺得是路徑不小心打錯了。于是找到db.properties文件鼠標(biāo)右擊,選擇Copy Qualified Name,復(fù)制配置文件的路徑確保路徑的正確性,但是并沒有解決這個問題。
  • 既然路徑?jīng)]錯還會報錯,就讓我感到很奇怪。于是,我在該類下寫了一個main函數(shù)直接跑Java Application去連接數(shù)據(jù)庫,萬萬沒想到居然成功連接上了(即成功讀取到了配置文件)。

報錯原因:
由上訴第二點(diǎn)應(yīng)該可以看出來了,其實(shí)還是路徑的問題,當(dāng)時做出了一個大膽的猜想:Java項(xiàng)目本地直接運(yùn)行(Java Application)的根目錄和Java Web項(xiàng)目在服務(wù)器上運(yùn)行(Run on Service)的根目錄是不同的!

在網(wǎng)上找了相關(guān)資料后,證實(shí)了我的猜想:

  • 當(dāng)點(diǎn)擊運(yùn)行Java Application時,項(xiàng)目的根目錄是從target/classes開始的
  • 當(dāng)點(diǎn)擊運(yùn)行Run on Service時,項(xiàng)目的根目錄是從WEB_INF/classes開始的

PS:至于為什么是這樣,可以去了解一下.classpath文件,它用于記錄項(xiàng)目編譯環(huán)境的所有信息,包括:源文件路徑、編譯后class文件存放路徑、依賴的jar包路徑、運(yùn)行的容器信息、依賴的外部project等信息。

問題解決

知道了出錯原因是在路徑問題上,那我們就把手動輸路徑改為通過Class獲取資源路徑。

獲取路徑的方法如下,如果給getResource()傳入的是"",返回的是JDBCUtils類的路徑;如果
傳入的是"/",返回的是target/classesWEB_INF/classes

String url = JDBCUtils.class.getResource("/").getPath();

由上面的截圖可以看到,配置文件db.properties是放在/class下的,所以要找路徑的時候傳入"/db.properties"參數(shù)即可。

InputStream is = new FileInputStream(JDBCUtils.class.getResource("/db.properties").getPath()); //等價于 InputStream is = JDBCUtils.class.getResourceAsStream("/db.properties");

進(jìn)行上述更改后,報錯信息消失了。我們來進(jìn)行如下測試:

用Navicat打開數(shù)據(jù)表可以發(fā)現(xiàn),注冊信息已經(jīng)成功插入表中!

參考資料

  • http://www.mamicode.com/info-detail-2660250.html
  • http://www.xuehuile.com/blog/57bd78ef636644dc87963f6189e148dd.html
  • https://www.cnblogs.com/zhangyinhua/p/7662334.html#_lab2_2_2

  • 一個合格的程序員,應(yīng)該要善于發(fā)現(xiàn)問題。?(?>?<)?

    總結(jié)

    以上是生活随笔為你收集整理的解决Java Web项目无法读取配置文件问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。