2012-09-25 23 views
1

我將一個.jar文件添加到JBoss 5啓動(run.bat/run.sh)文件的CLASSPATH中。這是一個依賴於基於servlet的應用程序引用的jar。如果我使用這個設置,那麼servlet會正常加載並按預期工作。然而,我注意到,如果我在servlet的WEB-INF/lib目錄中相同的罐子,我得到一個類轉換異常如下:當WEB-INF/lib和CLASSPATH中包含相同的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 

這不是因爲我不會有廣口瓶中的問題在這兩個地方,但我只是想知道爲什麼這樣發生。這是一個類加載問題?

謝謝。

+0

什麼是罐子名稱? – basiljames

+0

jar的名字是wasp.jar – Izza

回答

1

你提到的jar文件已經可以用JBoss。你把它放在WEB-INF/lib; JBoss已經加載了JBoss提供的jar中的類,並且與web-inf文件夾中的類存在衝突。即使類相同,由不同類加載器加載的類也會被視爲不同類。
當您在run.bat中給出時,僅加載了一個jar文件。 JBoss加載這個,並沒有衝突的罐子。

相關問題