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