xmlベースのSpring MVCアプリケーションをJava Configurationベースのアプリケーションに移動しようとしています。 mavenで利用できるさまざまなjava.servletクラスとの不一致があるようです。例えば、いくつかはaddServlet()メソッドを提供し、いくつかは提供しません。むしろ異論思わSpringServletContainerInitializerをjavax.servlet.ServletContainerInitializerにキャストできません
public class MyWebAppInitializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext container) throws ServletException {
AnnotationConfigWebApplicationContext rootContext =
new AnnotationConfigWebApplicationContext();
rootContext.register(JpaSandboxConf.class);
ServletRegistration.Dynamic registration = container.addServlet("dispatcher", new DispatcherServlet());
registration.setLoadOnStartup(1);
registration.addMapping("/myapp/*");
}
}
:
は、ここに私のconfigクラスです。
container.addServlet()
方法を得るために、私は私のポンポンでこれを含める:
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-servlet-api</artifactId>
<version>7.0.30</version>
</dependency>
それが提供didnotことで(私はこれを試してみましたが、以下のエントリからのServletContextクラスは動作しませんでしたaddServlet()メソッド):私は使用してこれを実行しようと
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>com.springsource.javax.servlet</artifactId>
<version>2.5.0</version>
<scope>provided</scope>
</dependency>
mvn clean tomcat7:run
私は不幸得る
SEVERE: A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].StandardContext[/]]
at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:252)
at java.util.concurrent.FutureTask.get(FutureTask.java:111)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1130)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:782)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1568)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1558)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].StandardContext[/]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
... 7 more
Caused by: java.lang.ClassCastException: org.springframework.web.SpringServletContainerInitializer cannot be cast to javax.servlet.ServletContainerInitializer
at org.apache.catalina.startup.ContextConfig.getServletContainerInitializer(ContextConfig.java:1543)
at org.apache.catalina.startup.ContextConfig.processServletContainerInitializers(ContextConfig.java:1464)
at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1190)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:825)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:300)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5161)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 7 more
私は1つのクラスはのjavax.servletから他方をSpringフレームワークから来ていることがわかり、しかし再び、方法がイライラしている(春提供クラスから存在していません、この例はSpring 3.2ドキュメント自体の中に存在するからです。
私はSpring 3.2を使用しています。私はEclipseを使用していません(すべての例はEclipseベースですが、IntelliJにあります)。これはmavenプロジェクトです
私はあなたの助けに感謝します。
が重複する可能性「を公開せずサーブモジュール」のチェックを外し> [サーバー]タブに移動して、これを解決http://stackoverflow.com/questions/11704069/servletdispatcher-cannot-be-cast-to-javax-servlet-servlet-exception-in-my-spring) – Rugal