最近在使用Java開發過程中遇到了一個問題,就是jar包無法讀取到本地的json文件。這讓我很困惑,因為在IDE中,我可以輕易地讀取到該json文件。
經過一番搜索和嘗試,我終于找到了解決方案。原來是因為在jar包中,json文件被打包到了一個名為"jar:file..."的路徑下,而這個路徑不能被習慣的方式訪問。所以,我們需要使用一些特殊的方法來訪問它。
InputStream inputStream = getClass().getClassLoader().getResourceAsStream("file.json"); String jsonString = IOUtils.toString(inputStream, StandardCharsets.UTF_8); JSONObject jsonObject = new JSONObject(jsonString);
以上代碼使用getResourceAsStream()方法獲取json文件的InputStream,在使用IOUtils將InputStream轉換成String,最后使用JSONObject將String解析成JSONObject。
當然,以上代碼并不是唯一的解決方案。你也可以使用getClass().getClassLoader().getResource()來獲取文件的URL路徑,再通過讀取URL路徑中的流來讀取文件。同樣的,你也可以使用第三方庫比如Gson或Jackson來解析json文件,而不是使用內置的JSONObject。
不管使用哪種方式,我們需要明確的是,當我們使用jar包時,我們需要進行一些額外的操作來讀取文件。希望這篇文章能夠幫助你解決這個問題,避免你浪費時間在這個小問題上。