【问题标题】:Class Cast Exception When Same Jar is Included in WEB-INF/lib and CLASSPATHWEB-INF/lib 和 CLASSPATH 中包含相同 Jar 时的类转换异常
【发布时间】:2012-09-25 12:33:28
【问题描述】:

我在 JBoss 5 启动 (run.bat/run.sh) 文件的 CLASSPATH 中添加了一个 .jar 文件。这是一个从基于 servlet 的应用程序中引用的依赖 jar。如果我使用此设置,则 servlet 可以正常加载并按预期工作。但是,我注意到如果我在 servlet 的 WEB-INF/lib 目录中有相同的 jar,我会得到一个类转换异常,如下所示:

ERROR [STDERR] ERROR: com.idoox.wasp.ProtocolRepositoryImpl - Exception in protocolHandler soap, protocolHandler com.server.saaj.soap.SOAP11ProtocolHandler, class space root.wasp-impl.SOAP : 
ERROR [STDERR] EXCEPTION: 
ERROR [STDERR] com.systinet.saaj.soap.SOAP11ProtocolHandler cannot be cast to org.idoox.wasp.ProtocolHandler 
ERROR [STDERR] java.lang.ClassCastException: com.server.saaj.soap.SOAP11ProtocolHandler cannot be cast to org.idoox.wasp.ProtocolHandler 

这不是问题,因为我不会在两个地方都有罐子,但我只是想知道为什么会这样。这是类加载问题吗?

谢谢。

【问题讨论】:

    标签: java servlets jboss classcastexception


    【解决方案1】:

    您提到的 jar 文件已经可以通过 JBoss 获得。当你把它放在WEB-INF/lib; JBoss 已经从 JBoss 可用的 jar 加载了类,并且与 web-inf 文件夹中的类存在冲突。即使类相同,由不同类加载器加载的类也被视为不同。
    当您输入run.bat 时,只会加载一个jar 文件。 JBoss 加载这个并且没有冲突的 jars。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-02
      • 1970-01-01
      • 1970-01-01
      • 2012-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-03
      相关资源
      最近更新 更多