【问题标题】:my dependant jars cannot find resources on project classpath我的依赖 jar 在项目类路径中找不到资源
【发布时间】:2014-08-08 00:03:23
【问题描述】:

我有一个依赖 jar,它需要访问 jar 资源中的文件以及我正在构建的依赖它的项目的资源。我不确定这是我需要完成的任务还是需要解决的问题。

jar 和依赖它的当前项目都是我的,我可以更改其中一个或两个。它们都是基于 Maven 和 Spring 的。

更多细节:

util.jar
 ->Base.class
-resources
 ->base-context.xml

app
 ->App extends Base
-resources
 ->app-context.xml

为了进行故障排除,我可以将 app-context 移动到 jars 资源文件夹中,一切都按预期工作。我需要合并类路径。

app/src/test/java/com/my/app/App.class

@ContextConfiguration(locations = "classpath:app-context.xml")
public class App extends Base {...} 

util.jar

@ContextConfiguration(locations = "classpath:util-context.xml")
public abstract class Base extends AbstractTestNGSpringContextTests {...}

app.class 的@contextconfiguration 失败,因为它找不到“classpath:app-context.xml”

java.lang.IllegalStateException: Failed to load ApplicationContext ... 
Caused by:     org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [app-context.xml]; 

嵌套异常是java.io.FileNotFoundException: class path resource [app-context.xml] cannot be opened because it does not exist

此文件确实存在,并且位于应用程序的资源文件夹中。如果我将app-context.xml 文件复制到util.jar 资源文件夹中,则错误已解决,但此解决方法作为解决方案不可行。

【问题讨论】:

  • 你得到了什么堆栈跟踪,你的代码到底是什么失败的?
  • java.lang.IllegalStateException: 无法加载 ApplicationContext ... 原因:org.springframework.beans.factory.BeanDefinitionStoreException: IOException 从类路径资源 [app-context.xml] 解析 XML 文档;嵌套异常是 java.io.FileNotFoundException:类路径资源 [app-context.xml] 无法打开,因为它不存在
  • 请用堆栈跟踪更新帖子,并发布生成堆栈跟踪的代码。
  • 令人困惑。您是在说“我有一个依赖 jar,它需要访问 jar 资源中的文件以及我正在构建的依赖它的项目的资源。”从源代码来看,属于该项目的App类试图访问不在util.jar中的文件,而是在项目本身中。
  • 对,它需要访问位于两者中的资源。我并不是说我目前没有一些错误配置,但现在应用程序加载 util-context.xml 就好了,如果我将它复制到 jar 的资源文件夹中,也加载 app.context 就好了。不知道为什么app.jar在app的resources文件夹中找不到东西,但是在jar的resource文件夹中可以找到资源。

标签: java spring maven jar


【解决方案1】:

检查创建的 jars 中的路径(区分大小写!),使用 7zip/WinZip 左右。

不妨试试

classpath:/app-context.xml

util-context.xml 似乎是错误的。

更多的 maven 使用 test/resources 目录来存放测试代码。

app/src/test/java/com/my/app/App.class
app/src/test/resources/app-context.xml

【讨论】:

  • 原来有人决定使用 resources/app-context.xml 并将 /resources 添加到 Eclipse 类路径(maven 对此一无所知)。将资源文件夹移动到 app/src/test/resources 至少是我 50% 的问题。
猜你喜欢
  • 2011-04-04
  • 2010-12-26
  • 2014-11-10
  • 1970-01-01
  • 2014-11-18
  • 2016-06-15
  • 2016-06-20
相关资源
最近更新 更多