【发布时间】:2013-12-10 21:23:54
【问题描述】:
在使用 Maven 将资源捆绑到 JAR 文件中时,我感觉我遗漏了一些关键的东西。我的目录结构是标准的 Maven 目录结构 (即\src\main\java,\src\main\resources)。
在使用 IDE 时,我将资源文件作为 \main\resources\images\blah... "),所以没有一条路径是正确的。
我的问题实际上有两个方面,第一个是我是否遗漏了一些明显的东西?第二个是处理这个问题的最佳方法是什么?我知道我可以在捆绑所有内容以进行部署时替换所有路径,或者将所有路径包含在 try/catch 块中,甚至更改 maven 输出目录,但我觉得这些不优雅,我遗漏了什么。 提前致谢。
编辑:我像这样引用资源文件:
getClass().getResource("/main/resources/images/lightboardImage.jpg"));
EDIT2:这显然是一个 IDE 配置问题,可能是因为我使用 Maven 将一个旧项目转换为一个。我真的不明白它是如何配置错误的。我的文件夹结构是:
src/main/java
src/main/资源
我的类路径中有一个“src”条目<classpathentry kind="src" path="src"/>
如果我右键单击 /main/resources/images/ 文件夹并用作源文件夹,它会将类路径条目转换为 <classpathentry excluding="main/resources/images/" kind="src" path="src"/> 并创建一个类似 <classpathentry kind="src" path="src/main/resources/images"/> 的新条目。它也不起作用。
EDIT3:好吧,这真的很愚蠢,但我才意识到问题所在。我实际上并没有将 Maven 用于本地开发构建。它使用 Eclipse 内置的 Ant 配置或其他。 Maven 用于自动部署构建,因此存在问题。很抱歉浪费大家的时间。
【问题讨论】:
-
在 JAR 中只有
\images\blah,\main\resources\images\blah是从 JAR 访问资源的错误方式。 '我引用资源文件'是什么意思,显示代码。 -
是的,但是我必须处理两条不同的路径——一条用于开发,一条用于部署。我知道这可能是一种常见情况,但我想问是否有一种简单、优雅的方法可以避免这种情况。