寫了一個web工程,在本地測試正確,但是部署到服務器上就出現錯誤。原因是讀取不到配置文件。
后來從打印出來的文件路徑中發現是用Java的class.getResource("/").getPath()獲取路徑的時候,路徑中的空格轉換成了%20。
在網上查詢相關信息,果然將空格轉成%20是一個古老的bug,我特意借此記錄一下,希望能幫到遇到同樣問題的朋友。
Bug ID: 4466485 getClass( ).getResource( ).getFile( ) returns file name with %20
此 bug 於 2001年6月被提出來,2002年11月最終關閉。
沒有修復的原因是這樣做會導致兼容性問題。
這里給出一個解決方案:
configPath = java.net.URLDecoder.decode(configPath,"utf-8");