본문 바로가기

개발환경/이클립스

[ERROR] .filterStart : Exception starting filter struts2

환경정보:
Eclipse Platform, Version: 3.3.2, Build id: M20080221-1800

m2eclipse 0.9.8.200905041414
tomcat-5.5.23

문제상황:
WTP Server환경에서 m2clipse를 사용하여 실행했을 때 아래 에러 스택과 같은 예외가 발생한다.
문제는 톰캣에 있는 servlet-api.jar(2.4) 와 'pom.xml'에 선언된

<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>servlet-api</artifactId>
  <version>2.4</version>
  <scope>provided</scope>
</dependency>

버전이 배포가 되어서 충돌하기 때문에 발생한다.
scope를 'test'변경하면 정상동작한다.

이로 미루어 보아 WTP서버에서 메이븐이 동작할 때 배포하지 않아야 할 라이브러리 까지배포하기 때문에 발생한다고 유추할 수 있다. 사실 'test'와 'provided'는 같은 결과를 가져온다. 즉, 컴파일시 또는 테스트시에는 라이브러리로 참조할 수 있게 해주지만 정작 배포할 때는 제외시키기 때문이다. 다만 의미적으로 다를 뿐이다.

※ 만약 scope를 provided, test 등으로 하지 않은 경우는 provided 또는 test로 하면 문제가 해결될 것이다. 이렇게 했는데도 해결되지 않으면 m2clipse 업데이트 사이트에서 최신 버전의 플러그인으로 업데이트하기 바란다. 단, 사용하는 이클립스에서 사용할 수 있는 버전인지 확인하는 센스를 잊지 않길 바란다.

Exception Stack Trace:

2009. 5. 15 오후 5:24:34 org.apache.catalina.core.StandardContext start
심각: Error filterStart
2009. 5. 15 오후 5:24:34 org.apache.catalina.core.StandardContext start
심각: Context [] startup failed due to previous errors
[ERROR] 05:24 34 (StandardContext.java:3639) [/fo].filterStart : Exception starting filter struts2
java.lang.ClassCastException: org.apache.struts2.dispatcher.FilterDispatcher cannot be cast to javax.servlet.Filter

 at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:208)
 at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:302)
 at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:78)
 at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3635)
 at org.apache.catalina.core.StandardContext.start(StandardContext.java:4222)
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
 at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
 at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
 at org.apache.catalina.core.StandardService.start(StandardService.java:448)
 at org.apache.catalina.core.StandardServer.start(StandardServer.java:700)
 at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:597)
 at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)
 at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)
2009. 5. 15 오후 5:24:34 org.apache.catalina.core.StandardContext start
심각: Error filterStart
2009. 5. 15 오후 5:24:34 org.apache.catalina.core.StandardContext start
심각: Context [/fo] startup failed due to previous errors
2009. 5. 15 오후 5:24:34 org.apache.coyote.http11.Http11BaseProtocol start