2012-12-07 36 views
0

當試圖從SWT應用程序內啓動嵌入式的Tomcat Web應用程序,我得到的錯誤(以下堆棧跟蹤):java.lang.ClassCastException起tomcat加載Servlet時

java.lang.ClassCastException: org.apache.struts.action.ActionServletjava.lang.ClassCastException:org.apache.jasper.servlet.JspServlet

我已經通過在/lib中/目錄中的所有jar文件的搜索和/WEB-INF/lib目錄,並沒有發現任何重複的引用到任何Servlet類。

該應用使用Tomcat 6.0.36和Struts 1.3.10

的應用程序源代碼構建和沒有錯誤編譯成功。在<項目>

Jar文件\ lib中

lib\annotations-api.jar 
lib\axis\axis-ant.jar 
lib\axis\axis.jar 
lib\axis\commons-discovery-0.2.jar 
lib\axis\jaxrpc.jar 
lib\axis\junit.jar 
lib\axis\saaj.jar 
lib\axis\wsdl4j-1.5.1.jar 
lib\catalina.jar 
lib\com.dom.jsso.common-server.jar 
lib\commons-dbcp-1.2.1.jar 
lib\commons-logging-1.1.jar 
lib\commons-pool.jar 
lib\derby.jar 
lib\derbytools.jar 
lib\dom4j.jar 
lib\ehcache-1.1.jar 
lib\el-api.jar 
lib\hibernate3.jar 
lib\jasper.jar 
lib\jsp-api.jar 
lib\jta.jar 
lib\odmg.jar 
lib\org.springframework.asm-3.1.3.RELEASE.jar 
lib\org.springframework.beans-3.1.3.RELEASE.jar 
lib\org.springframework.context-3.1.3.RELEASE.jar 
lib\org.springframework.core-3.1.3.RELEASE.jar 
lib\org.springframework.web-3.1.3.RELEASE.jar 
lib\org.springframework.web.struts-3.1.3.RELEASE.jar 
lib\servlet-api.jar 
lib\tomcat-coyote.jar 
lib\tomcat-dbcp.jar 
lib\tomcat-juli.jar 
lib\tools\ojdbc14.jar 

在項目中使用其他JAR(爲的JFace和SWT)中的tomcat \的webapps \

eclipse\plugins\org.eclipse.jface_3.7.0.v20110928-1505.jar 
eclipse\plugins\org.eclipse.jface.text_3.7.2.v20111213-1208.jar 
eclipse\plugins\org.eclipse.swt_3.7.2.v3740f.jar 
eclipse\plugins\org.eclipse.swt.win32.win32.x86_3.7.2.v3740f.jar 

Jar文件<項目> \ WEB-INF \ lib

0 web.xml中的T​​omcat的/ CONF/web.xml中的
WEB-INF\lib\antlr-2.7.2.jar 
WEB-INF\lib\commons-beanutils-1.8.0.jar 
WEB-INF\lib\commons-digester-1.8.jar 
WEB-INF\lib\commons-fileupload-1.1.1.jar 
WEB-INF\lib\commons-validator-1.3.1.jar 
WEB-INF\lib\oro-2.0.8.jar 
WEB-INF\lib\struts-core-1.3.10.jar 
WEB-INF\lib\struts-taglib-1.3.10.jar 

的servlet部

<servlet> 
    <servlet-name>jsp</servlet-name> 
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> 
    <init-param> 
     <param-name>fork</param-name> 
     <param-value>false</param-value> 
    </init-param> 
    <init-param> 
     <param-name>xpoweredBy</param-name> 
     <param-value>false</param-value> 
    </init-param> 
    <load-on-startup>3</load-on-startup> 
</servlet> 

的servlet部

<servlet> 
     <servlet-name>action</servlet-name> 
     <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> 
     <init-param> 
      <param-name>config</param-name> 
      <param-value>/WEB-INF/struts-config.xml,/WEB-INF/struts-config-adm.xml,/WEB-INF/struts-config-ajax.xml</param-value> 
     </init-param> 
     <init-param> 
      <param-name>debug</param-name> 
      <param-value>2</param-value> 
     </init-param> 
     <init-param> 
      <param-name>detail</param-name> 
      <param-value>2</param-value> 
     </init-param> 
     <load-on-startup>2</load-on-startup> 
    </servlet> 

錯誤堆棧跟蹤:

Dec 7, 2012 1:46:08 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions 
INFO: Loading XML bean definitions from file [C:\projects\JSSO\com\example\conf\config.xml] 
Dec 7, 2012 1:46:08 PM com.example.tomcat.embeddedTomcat init 
INFO: Starting the tomcat bean 
Dec 7, 2012 1:46:09 PM org.apache.catalina.startup.Embedded start 
INFO: Starting tomcat server 
Dec 7, 2012 1:46:09 PM org.apache.catalina.core.StandardEngine start 
INFO: Starting Servlet Engine: Apache Tomcat/6.0.36 
Dec 7, 2012 1:46:10 PM org.apache.catalina.core.ApplicationContext log 
INFO: Marking servlet action as unavailable 
Dec 7, 2012 1:46:10 PM org.apache.catalina.core.StandardContext loadOnStartup 
SEVERE: Servlet/threw load() exception 
java.lang.ClassCastException: org.apache.struts.action.ActionServlet 
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1149) 
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1026) 
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4421) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4734) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057) 
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:840) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057) 
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463) 
    at org.apache.catalina.startup.Embedded.start(Embedded.java:825) 
    at com.example.tomcat.embeddedTomcat.init(embeddedTomcat.java:111) 
    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:585) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1581) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1522) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:284) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) 
    at com.example.util.ServiceLocator.getModuleManager(ServiceLocator.java:26) 
    at com.example.SWTMain$2.run(SWTMain.java:136) 
    at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) 
    at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135) 
    at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4140) 
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3757) 
    at com.example.SWTMain.waitUntilExit(SWTMain.java:283) 
    at com.example.SWTMain.main(SWTMain.java:176) 
    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:585) 
    at com.example.Main.invokeLoader(Main.java:138) 
    at com.example.Main.main(Main.java:123) 
Dec 7, 2012 1:46:10 PM org.apache.catalina.core.ApplicationContext log 
INFO: Marking servlet jsp as unavailable 
Dec 7, 2012 1:46:10 PM org.apache.catalina.core.StandardContext loadOnStartup 
SEVERE: Servlet/threw load() exception 
java.lang.ClassCastException: org.apache.jasper.servlet.JspServlet 
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1149) 
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1026) 
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4421) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4734) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057) 
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:840) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057) 
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463) 
    at org.apache.catalina.startup.Embedded.start(Embedded.java:825) 
    at com.example.tomcat.embeddedTomcat.init(embeddedTomcat.java:111) 
    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:585) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1581) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1522) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:284) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) 
    at com.example.util.ServiceLocator.getModuleManager(ServiceLocator.java:26) 
    at com.example.SWTMain$2.run(SWTMain.java:136) 
    at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) 
    at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135) 
    at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4140) 
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3757) 
    at com.example.SWTMain.waitUntilExit(SWTMain.java:283) 
    at com.example.SWTMain.main(SWTMain.java:176) 
    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:585) 
    at com.example.Main.invokeLoader(Main.java:138) 
    at com.example.Main.main(Main.java:123) 
Dec 7, 2012 1:46:10 PM org.apache.tomcat.util.modeler.Registry registerComponent 
SEVERE: Null component null:type=JspMonitor,name=jsp,WebModule=//localhost/,J2EEApplication=none,J2EEServer=none 
Dec 7, 2012 1:46:10 PM org.apache.coyote.http11.Http11Protocol init 
INFO: Initializing Coyote HTTP/1.1 on http-8043 
Dec 7, 2012 1:46:10 PM org.apache.coyote.http11.Http11Protocol start 
INFO: Starting Coyote HTTP/1.1 on http-8043 
Dec 7, 2012 1:46:10 PM com.example.tomcat.embeddedTomcat init 
INFO: Tomcat Started 
Dec 7, 2012 1:46:11 PM org.apache.catalina.core.ApplicationDispatcher invoke 
WARNING: Servlet jsp is currently unavailable 
Dec 7, 2012 1:46:12 PM com.example.SWTMain$1 shellClosed 
INFO: Closing the application 
Dec 7, 2012 1:46:12 PM com.example.tomcat.embeddedTomcat shutdown 
INFO: Shutting down tomcat 
Dec 7, 2012 1:46:12 PM org.apache.coyote.http11.Http11Protocol destroy 
INFO: Stopping Coyote HTTP/1.1 on http-8043 
+0

可能是Struts的版本和Java Servlets版本之間的兼容性不,發表您的支柱/ tomcat的版本 – Subin

+0

奇怪怎麼trows'ClassCastException'沒有表現出它試圖投... –

+0

什麼課@ SubinS - 我已經添加了版本(Tomcat 6.0.36和Struts 1.3.10) – jeffl8n

回答

0

經過一番研究,你的班級路徑中有多個副本或多個版本的struts,刪除它們並只保留一個。雖然你說過檢查過,但我發現的所有答案都指出了這一點,所以你可能有但沒有找到答案。

此外,請嘗試從war文件中刪除jar,因爲它已包含在內。

參考文獻:

該文件的struts.jar不應該被存放在一個公共區域,如 WAS/lib目錄下。它應該包含在每個 struts應用程序的WEB-INF/lib文件夾中。

http://www.coderanch.com/t/46849/Struts/Failed-load-servlet-Struts

從你的戰爭lib文件夾或全球 公共lib目錄中刪除Struts的核心API罐子。在兩個地方有兩個相同的罐子, 由不同的班級裝載機裝載,因此鑄造爲 失敗。

http://www.liferay.com/community/forums/-/message_boards/message/6813153

搜索包含org.apache.struts.action.ActionServlet

的Struts不支持多個servlet映射到相同的動作 servlet實例類確切的罐子。

http://grokbase.com/t/struts/user/02bqqdrxjt/struts-1-1b2-and-sybase-easerver-4-1-0-jaguar

+0

我已經驗證了ActionServlet類只有1個jar文件(struts-core-1.3.10.jar)。 jar文件已經在WEB-INF \ lib目錄中。 struts servlet定義也只有一個servlet映射。 – jeffl8n

相關問題