Maven的包依賴沖突可引發java.lang.IncompatibleClassChangeError錯誤


新版API上線后,發現LOG文件沒有正常輸出。查看Tomcat的Log文件發現如下的錯誤信息

May 29, 2015 7:56:21 AM com.sun.xml.ws.server.sei.EndpointMethodHandler invoke                                    
SEVERE: Found class ch.qos.logback.core.spi.CyclicBufferTracker, but interface was expected                                    
java.lang.IncompatibleClassChangeError: Found class ch.qos.logback.core.spi.CyclicBufferTracker, but interface was expected    

 

從字面含義分析,虛擬機期望使用的是一個Interface型的CyclicBufferTracker,實際上Load進來的是一個Class型的。這種問題一般是由於Compile和Runtime使用的JAR包版本不一致導致的。而這種版本不一致,一般是由於Maven的包依賴沖突引起。

 

ch.qos.logback.core.spi.CyclicBufferTracker是logback-core中的一個類,通過Eclipse的Dependency Hierarchy工具,對pom.xml中的包依賴關系,使用logback-core關鍵字進行Filter:

果然發現某一個引用的依賴包中,依賴了1.0.3版本的logback-core,和本工程所依賴的1.1.2版本,產生了沖突。

根據項目需要,調整pom文件選定所需要的JAR版本,解決包依賴沖突后,即可解決java.lang.IncompatibleClassChangeError問題。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM