在STS中的vFabric tc Server上部署时,ApplicationContextInitializer相关异常

时间:2013-11-15 11:42:54

标签: java spring tomcat spring-tool-suite

我正在尝试使用vFabric tc Server在Spring Tool Suite(STS)中部署我的Web应用程序,但我得到了例外。值得注意的是,如果我在一个独立的Tomcat 6中编译和运行它运行正常。我已经尝试了vFabric tc版本tomcat-7.0.35.B.RELEASE和tomcat-6.0.36.B.RELEASE。

错误是:

java.lang.IllegalArgumentException: class [springapp.web.spring.MyInitializer] must implement ApplicationContextInitializerclass springapp.web.spring.MyInitializer is not assignable to interface org.springframework.context.ApplicationContextInitializer

我无法解释为什么在初始化程序实现ApplicationContextInitializer时发生此错误的原因:

public class MyInitializer implements ApplicationContextInitializer {
  public void initialize(ConfigurableApplicationContext ctx) {
    try {
        PropertySource ps = new ResourcePropertySource("file:///home/jim/development/act/impact/webapp.properties");
        ctx.getEnvironment().getPropertySources().addFirst(ps);
        // perform any other initialization of the context ...
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
  }
}

有没有人对我可以试图让它运行的任何建议?

2 个答案:

答案 0 :(得分:2)

您的应用程序服务器上有org.springframework.context.ApplicationContextInitializer类的不同版本(在spring-context jar中)。这通常是因为将jar放入胖战和应用程序服务器自己的类路径中。通常,您应该避免在系统类路径上使用除系统API(如Servlet)之外的任何内容,并在每个应用程序中包含必要的jar。

答案 1 :(得分:0)

我不明白为什么会这样,但问题结果是在我的pom文件中我有spring-context-support

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-suppoer</artifactId>
    <version>3.2.2.RELEASE</version>
    <type>pom</type>
</dependency>

删除type元素解决了问题。