假设我有两个项目:
ProjectA and ProjectB
ProjectA depends on ProjectB
我有一个 context.xml 位于 ProjectB / target / test-classes / context.xml 。现在我需要从ProjectA中讨厌上下文。在projectB中,我有一个访问者类:
Class ContextAccessor{
ApplicationContext context = new
ClassPathXmlApplicationContext("context.xml");
public static ApplicationContext getContext(){
return context;
}
}
在ProjectA中,我正在尝试使用以下方式获取上下文:
ContextAccessor.getContext();
但它会抛出一条带有消息的异常:
Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [context.xml]; nested exception is java.io.FileNotFoundException: class path resource [context.xml] cannot be opened because it does not exist
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:341)
at
请提出建议。鉴赏。
答案 0 :(得分:0)
您需要在ProjectA的类路径中确保ProjectB(我认为它打包为jar)。如果你正在使用Maven,请参考here,了解如何做到这一点。
一旦它在类路径中,您应该能够使用上面给出的代码创建上下文。还要确保context.xml的位置正确传递给构造函数,请参阅JavaDoc ClassPathXmlApplicationContext。
答案 1 :(得分:0)
我认为你没有在Project的项目依赖项中添加Project。请添加并重试。
答案 2 :(得分:0)
我终于通过使用:
解决了这个问题Class ContextAccessor{
ApplicationContext context = new
FileSystemXmlApplicationContext(this.getClass().getProtectionDomain().
getCodeSource().getLocation().getPath());
public static ApplicationContext getContext(){
return context;
}
}
假设上下文位于 ProjectB / target / classes / context.xml