2014-12-07 141 views
0

我搜索了上下,並沒有理解解決方案,看起來像我的問題。也許我不明白這個問題足以從別人的問題中推斷出我自己的解決方案。從我在網上可以找到的內容來看,程序1似乎試圖從jar中讀取資源。我試圖讓一個jar讀取自己的資源。一個jar文件如何讀取自己的資源文件?

用例: 我有一個包含源文件和資源文件的groovy項目。從常規項目中,我可以通過下面的代碼片段

def dictionaryFile = new File("${localeDirectory}/${name}/${locale}.json"); 

其中localeDirectory =的src /主/資源/區域設置讀取我的資源文件(放在src /主/資源/區域設置)。

我使用gradle將我的groovy項目構建到庫中,以便與單獨的應用程序(應用程序2)一起使用。當應用程序2開始使用這個jar時,上面的代碼片段找不到資源文件。我查看了我的jar文件的結構,並看到gradle將資源放在locales(不是src/main/resources/locales)下。

如何讓我的groovy項目訪問我的資源文件並使application2能夠使用構建的jar文件訪問自己的資源文件?

+4

讀取JVM上資源文件的方法是ClassLoader#getResource(AsStream)。網絡搜索應該提供大量信息。 – 2014-12-07 01:57:48

+0

我終於能夠找到一個很好的例子(從頭到尾)如何使用類加載器資源流。結果發現我的資源沒有被找到,因爲它與請求資源的類不同。 – mvhatch 2014-12-07 18:09:55

回答

0
def final InputStream inputStream = getClass().getResourceAsStream("${localeDirectory}/${name}/${locale}.json"); 

這個工作一旦我改變了我的項目結構,使locale目錄與請求資源文件的類在同一個包中。