0

假设我有两个项目:

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 

请提出建议。欣赏。

4

3 回答 3

0

我终于通过使用解决了这个问题:

Class ContextAccessor{
    ApplicationContext context = new
        FileSystemXmlApplicationContext(this.getClass().getProtectionDomain().
        getCodeSource().getLocation().getPath());

    public static ApplicationContext getContext(){
        return context;
    }
}

假设上下文位于ProjectB/target/classes/context.xml

于 2013-09-03T23:49:41.220 回答
0

您需要确保 ProjectB(我想它被打包为 jar)在 ProjectA 的类路径中。如果您使用 Maven,请参阅此处,以了解如何完成此操作。

一旦它在类路径中,您应该能够使用上面给出的代码创建一个上下文。还要确保 context.xml 的位置正确传递给构造函数,请参阅 JavaDoc for ClassPathXmlApplicationContext

于 2013-09-03T19:17:15.600 回答
0

我认为您没有在 ProjectA 的项目依赖项中添加 ProjectB。请添加并重试。

于 2013-09-03T19:20:37.720 回答