我正在尝试使用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();
}
}
}
有没有人对我可以试图让它运行的任何建议?
答案 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
元素解决了问题。