启动tomcat加载servlet时出现java.lang.ClassCastException



当试图从SWT应用程序中启动嵌入式tomcat web应用程序时,我收到了错误(下面的堆栈):

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

我已经搜索了/lib/目录和/WEB-INF/lib/strong>目录中的所有jar,没有发现任何对Servlet类的重复引用。

该应用程序使用Tomcat 6.0.36和Struts 1.3.10

应用程序源代码构建和编译成功,没有任何错误。

在<项目>\lib

libannotations-api.jar
libaxisaxis-ant.jar
libaxisaxis.jar
libaxiscommons-discovery-0.2.jar
libaxisjaxrpc.jar
libaxisjunit.jar
libaxissaaj.jar
libaxiswsdl4j-1.5.1.jar
libcatalina.jar
libcom.dom.jsso.common-server.jar
libcommons-dbcp-1.2.1.jar
libcommons-logging-1.1.jar
libcommons-pool.jar
libderby.jar
libderbytools.jar
libdom4j.jar
libehcache-1.1.jar
libel-api.jar
libhibernate3.jar
libjasper.jar
libjsp-api.jar
libjta.jar
libodmg.jar
liborg.springframework.asm-3.1.3.RELEASE.jar
liborg.springframework.beans-3.1.3.RELEASE.jar
liborg.springframework.context-3.1.3.RELEASE.jar
liborg.springframework.core-3.1.3.RELEASE.jar
liborg.springframework.web-3.1.3.RELEASE.jar
liborg.springframework.web.struts-3.1.3.RELEASE.jar
libservlet-api.jar
libtomcat-coyote.jar
libtomcat-dbcp.jar
libtomcat-juli.jar
libtoolsojdbc14.jar

项目中使用的其他罐子(用于JFace和SWT)

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

tomcat\webapps\<中的Jar文件;项目>\WEB-INF\lib

WEB-INFlibantlr-2.7.2.jar
WEB-INFlibcommons-beanutils-1.8.0.jar
WEB-INFlibcommons-digester-1.8.jar
WEB-INFlibcommons-fileupload-1.1.1.jar
WEB-INFlibcommons-validator-1.3.1.jar
WEB-INFliboro-2.0.8.jar
WEB-INFlibstruts-core-1.3.10.jar
WEB-INFlibstruts-taglib-1.3.10.jar

tomcat/conf/web.xml的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>

web.xml的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:projectsJSSOcomexampleconfconfig.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

经过一些研究,您的类路径中有多个struts副本或版本,请删除它们,只保留一个。虽然你说你查过了,但我找到的所有答案都指向了这一点,所以你可能有,但没有找到。

另外,尝试从war文件中删除jar,因为它已经包含在内了。

参考文献:

struts.jar文件不应保存在诸如WAS/lib。它应该包含在每个的WEB-INF/lib文件夹中struts应用程序。

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

从war-lib文件夹或全局中删除Struts核心API jarcommons-lib目录。在两个地方有两个相同的罐子,它由不同的类装载器装载,因此铸造弱点

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

搜索包含org.apache.struts.action.ActionServlet 类的确切jar

Struts不支持多个servlet映射到同一个操作servlet实例。

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

相关内容

最新更新