Eclipse RCP找不到applicationContext.xml

时间:2012-09-25 17:16:06

标签: java spring eclipse-plugin eclipse-rcp

我正面临着集成Eclipse RCP和Spring IOC的一些问题。

以下是我对此过程的处理方法。

我已完成的步骤

  1. 创建了一个包含所有Spring jar的Bundle(使用exisitng archives项目类型的插件)。
  2. 使用视图创建了一个简单的Hello RCP应用程序。
  3. 将Bundle添加为RCP项目的依赖项(步骤2)
  4. 在我的RCP项目中创建了一个简单的类,其对象必须通过applicationContext.xml实例化。

    public class Triangle {
                public void draw(){
                    System.out.println("Traingle drawn");
                }
           }
    

    我的applicationContext.xml代码

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
    <beans>
       <bean id="JGID" class="st.Triangle"/>
    </beans>
    

    我的视图的代码片段部分,我正在获取applicationContext.xml,如下所示

    ApplicationContext applicationContext = new FileSystemXmlApplicationContext("D:/applicationContext.xml");
    Triangle triangle = (Triangle) applicationContext.getBean("JGID");
    triangle.draw();
    

    这会引发错误

      

    找不到定义名称为'JGID'的bean的类[st.Triangle]   file [D:\ applicationContext.xml];嵌套异常是   java.lang.ClassNotFoundException:st.Triangle

    如何解决此错误?

    作为一种解决方法,我尝试了另一种方式,我也失败了,如下面所示,使用ClassPathXmlApplicationContext

    ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
    

    以下是错误

      

    !MESSAGE无法创建视图ID st.view:IOException从类路径资源[applicationContext.xml]解析XML文档;嵌套异常是java.io.FileNotFoundException:类路径资源   无法打开[applicationContext.xml],因为它不存在        !STACK 0 java.io.FileNotFoundException:类路径资源[applicationContext.xml]无法打开

    我的Eclipse RCP applcication中的上述代码行,它在哪里检查或查找xml文件。

    我尝试了以下方法。

    • 将applicationContext.xml放在src文件夹中。
    • 在项目文件夹中。
    • Inisde包。

    在所有3个案例中,它都是FileNotFoundException。我应该在哪里放置applicationContext.xml文件以使applicationContext引用找到它?

2 个答案:

答案 0 :(得分:1)

spring-context.xml放在应用程序的类路径中,为了调用它,您需要以下代码

ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-context.xml");
            Triangle triangle = (Triangle) ctx.getBean("jgid");
             triangle.draw();  

This site

被盗

答案 1 :(得分:1)

你确定Triangle在“ctx”类路径中吗?

你能直接说明另一个简单的bean吗?例如

<bean id="str" class="java.lang.String" value="Hello World">

然后致电

String str= (String) ctx.getBean("str");