ClassCastException - Redhat上的错误,而不是Windows上的错误

时间:2011-10-04 15:30:03

标签: java apache tomcat redhat

我的网站在Tomcat上运行。当我尝试访问其中一个页面进行状态检查时,它会检查特定的JAR文件。在Red Hat 5上,但不在Windows上,我收到以下错误:

java.lang.ClassCastException: LoggingPasshashInfo cannot be cast to PasshashInfo

我从第三方那里得到了这个JAR,就像我得到它一样。根据Apache的tatus页面,RH设置在Tomcat版本7.0.22和JVM版本1.6.0_27-b07上。 Windows位于Tomcat 7.0.19和JVM 1.6.0_26-b03上。在尝试修复此问题的过程中,Red Hat的Tomcat从6.0.33升级。

无论如何,我在这方面有点新鲜,除了让设置看起来尽可能相似之外,我不知道如何解决这个问题。任何帮助都没问题,如果我没有分享任何重要细节,请告诉我。而且重申一下,我正在使用的JAR是一个黑盒子。

完整错误:

Java.lang.ClassCastException: com.adobe.adept.fulfillment.test.LoggingPasshashInfo cannot be cast to com.adobe.adept.fulfillment.PasshashInfo
    at com.adobe.adept.fulfillment.servlet.Fulfill.<clinit>(Fulfill.java:130)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at java.lang.Class.newInstance0(Class.java:355)
    at java.lang.Class.newInstance(Class.java:308)
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:127)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1099)
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:836)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:135)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:964)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)

1 个答案:

答案 0 :(得分:0)

我怀疑你在Linux服务器上安装了多个jar文件副本。结果可能是多个类加载器加载了相同的jar。通常相关但由不相关的类加载器加载的类不能通过强制转换来转换。仔细检查jar文件的其他副本 - 例如,在Tomcat的顶级“server / lib”目录中 - 并删除除一个以外的所有副本。