Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我的从属JAR在项目类路径上找不到资源_Java_Spring_Maven_Jar - Fatal编程技术网

Java 我的从属JAR在项目类路径上找不到资源

Java 我的从属JAR在项目类路径上找不到资源,java,spring,maven,jar,Java,Spring,Maven,Jar,我有一个dependency jar,它需要访问jar资源中的文件以及我正在构建的依赖它的项目的资源。我不确定这是我需要完成的任务还是我需要解决的问题 jar和依赖它的当前项目都是我的,我可以更改其中一个或两个。它们都是基于maven和spring的 更多详情: util.jar ->Base.class -resources ->base-context.xml app ->App extends Base -resources ->app-context.x

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

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

更多详情:

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

app
 ->App extends Base
-resources
 ->app-context.xml
为了排除故障,我可以将应用程序上下文移动到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失败,因为它找不到类路径: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:无法打开类路径资源[app context.xml],因为它不存在


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

检查路径,区分大小写!在创建的jar中,使用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

您得到的堆栈跟踪以及失败的代码具体是什么?java.lang.IllegalStateException:未能加载ApplicationContext。。。原因:org.springframework.beans.factory.BeanDefinitionStoreException:IOException解析来自类路径资源[app context.XML]的XML文档;嵌套异常为java.io.FileNotFoundException:类路径资源[app context.xml]无法打开,因为它不存在。请使用堆栈跟踪更新post,并发布生成堆栈跟踪的代码。你是说我有一个依赖性jar,它需要访问jar资源中的文件,以及我正在构建的依赖于它的项目的资源。根据源代码判断,属于项目的App类尝试访问的文件不在util.jar中,而是在项目本身中。对,它需要访问位于两者中的资源。我并不是说我目前并没有一些错误配置,但现在app加载util-context.xml很好,如果我将其复制到jar的resource文件夹中,也会加载app.context。我不知道为什么app.jar找不到位于app的resources文件夹中的东西,但可以在jar的resource文件夹中找到资源。结果是有人决定使用resources/app-context.xml并将/resources添加到eclipse类路径中,maven对此一无所知。将resources文件夹移动到app/src/test/resources至少是我问题的50%。