2014-12-07 122 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目录与请求资源文件的类在同一个包中。

相关问题