我正在尝试加载一个jar内部的应用程序上下文作为插件。我用它来加载上下文:
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath*:**my-context.xml");
当我通过pom.xml加载jar时,它可以正常工作。
然后我使用eclipse而不是maven直接在classpath中添加它以避免每次编译(最终目标是tomcat中的共享lib文件夹,也不工作)。现在spring无法找到它并返回默认上下文(无例外)
我检查过它是否正确地插入到类路径中:
InputStream in1 = this.getClass().getClassLoader().getResourceAsStream("my-context.xml");
有效。
我查了一下日志。使用pom.xml,spring正在jar中搜索
Searching directory [...target\classes\META-INF\maven\x.y.z] for files matching pattern [...\x.y.z/target/classes/**/my-context.xml]
Searching directory [...ehealth.poc.module1] for files matching pattern [D:/JRB/Projects/Vivates/workspaces/default/extcom/ehealth.poc.module1/target/classes/**/ecm-context.xml]
...
Resolved location pattern [classpath*:**/my-context.xml] to resources [file [...\target\classes\my-context.xml]]
Loading XML bean definitions from file [...\target\classes\my-context.xml]
...
在第二种情况下,关于我的罐子的日志中没有任何内容。
为什么当我使用maven或直接使用类路径时spring不具有相同的行为?除了在类路径中添加依赖项位置之外,我还在做其他事情吗?
答案 0 :(得分:0)
最后,我们在eclipse上找到了解决方案。
问题来自** in
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath*:**my-context.xml");
看起来**不会扫描.jar文件。设置直接路径是有效的:
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:my-context.xml");