1

我在 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 

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

谢谢你。

4

1 回答 1

1

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

于 2012-09-25T04:33:28.303 回答