[英]Load non-Java resource from WAR
我正在嘗試從特定的WAR文件加載非Java資源。 這就是我試圖實現這個目標的方法:
SomeClassInMyWarFile.class.getClassLoader().getResource("path/file.txt");
在JBoss 4中運行時工作得很好 - getClassLoader()返回WebAppClassLoader
的實例。
但是,當我嘗試在JBoss 6下運行此代碼時,我得到了一個BaseClassLoader
實例,而該實例無法在該WAR內部找到資源。
出於調試目的,當我在兩者上調用getResource(“./”)時,結果如下:
JBoss 4
"file:/C:/path/to/my/WarFile.war/"
JBoss 6
"file:/C:/jboss6/bin/a1k2347-kpm5pr-hjfoi81u-1-hjfoj582-dz/"
“/ a1k2347-kpm5pr-hjfoi81u-1-hjfoj582-dz /”甚至不存在。
我覺得我沒有正確設置我的jboss6,或者我在這里錯過了另一個重要的事情......任何想法可能會發生什么? 或者甚至可能有人能夠解釋我做錯了什么?
好吧,好像我一直缺少對WAR文件應該如何工作的基本理解。
在我了解到只有WEB-INF/classes
和WEB-INF/lib
被添加到類加載器的類路徑中,而不是 WAR文件的根目錄之后,解決問題非常簡單:
作為快速修復,我將path/file.txt
更改為../../path/file.txt
,因此資源的路徑是相對於WEB-INF/classes
這確實是丑陋的。 總有一天,我會花一些時間來增強我們的構建過程,因此資源會自動移動到類路徑上的目錄中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.