簡體   English   中英

從WAR加載非Java資源

[英]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/classesWEB-INF/lib被添加到類加載器的類路徑中,而不是 WAR文件的根目錄之后,解決問題非常簡單:

作為快速修復,我將path/file.txt更改為../../path/file.txt ,因此資源的路徑是相對於WEB-INF/classes

這確實是丑陋的。 總有一天,我會花一些時間來增強我們的構建過程,因此資源會自動移動到類路徑上的目錄中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM