如何确认ClassPathXmlApplicationContext是否找到文件?

时间:2015-12-17 16:41:11

标签: java spring

我们有一个不在Web容器中运行的应用程序,因此我尝试启动Spring。在“主要”功能中,我们有:

public static void main(String[] args) throws InterruptedException, IOException, AlreadyAliveException, InvalidTopologyException, AuthorizationException {

    // starting up spring...
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath*:/applicationContext.xml");
    DataSourceTransactionManager dstm = applicationContext.getBean("markiscool", DataSourceTransactionManager.class);
    dstm.toString();
}

我的applicationContext.xml包含:

<bean id="markiscool" class="blah.entities.LocationEntity" />

该应用在启动时会记录下来:

  

[INFO] ClassPathXmlApplicationContext - 刷新   org.springframework.context.support.ClassPathXmlApplicationContext@295cd6e5:   开始升级   [Thu Dec 17 10:28:28 CST 2015];上下文层次结构的根   线程“main”中的异常   org.springframework.beans.factory.NoSuchBeanDefinitionException:没有   名为'markiscool'的bean已定义

我已经尝试将垃圾放在xml文件中,但它没有失败,所以它一定不能找到文件。此外,该文件位于类路径上:

enter image description here

我也把文件放在我能想到的每个地方。它没有加载。救命啊!

3 个答案:

答案 0 :(得分:2)

尝试使用FileSystemXmlApplicationContext

  ApplicationContext applicationContext = new FileSystemXmlApplicationContext("/conf/applicationContext.xml");

而不是:

  ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath*:/applicationContext.xml");

答案 1 :(得分:0)

试试这个:

右键单击 - &gt;属性 - &gt;部署程序集

输入一个条目:conf - &gt; /

试 新的ClassPathXmlApplicationContext(&#34; applicationContext.xml&#34;);

答案 2 :(得分:-1)

1)将applicationContext.xml放入config文件夹

config folder

2)告诉Maven将applicationContext.xml包含在它创建的jar中

POM include statement

3)使用函数ClassPathXmlApplicationContext来拉入文件

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath*:conf/applicationContext.xml");

注意:如果您尝试访问jar内的文件,FileSystemXmlApplicationContext将不起作用。出于这个原因,我建议使用ClassPathXmlApplicationContext,因为无论您是在eclipse中还是通过jar运行项目,它都可以运行