dubbo啟動報錯,反射例項化問題

weixin_33866037發表於2017-10-10

1、問題背景:

在dubbo啟動的過程中報錯誤:java.lang.ClassNotFoundException: javassist.ClassPath,除錯發現程式碼:Class<?> clazz = Class.forName(line, true, classLoader)執行載入類com.alibaba.dubbo.common.compiler.support.JavassistCompiler時報:java.lang.NoClassDefFoundError: javassist/ClassPath,這個錯誤最後被加工最終變成上邊的錯誤。可是檢視專案下發現依賴的包javassist-3.18.1-GA.jar命名存在,開啟這些jar包,其中的javassist.ClassPath的確存在啊,於是我換了個版本javassist-3.18.2-GA.jar程式跑起來了。那麼到底是怎麼回事呢?

2、出現原因:

其實就是因為JavassistCompile使用了類javassist.ClassPath。經過一點點的比較,最後發現 javassist-3.18.1-GA.jar這個包是有問題的,因為其MAINFEST.FM檔案是打不開的,解壓以後也報各種Class檔案格式錯誤,看來應該是這個問題了,時間緊張也不打算深入驗證了,總之當大家出現這種問題時,也算是一種可能問題吧,希望能為大家解決問題提供線索。

3、解決方法:

引入相關pom依賴:

<!-- https://mvnrepository.com/artifact/org.javassist/javassist -->
<dependency>
    <groupId>org.javassist</groupId>
    <artifactId>javassist</artifactId>
    <version>3.15.0-GA</version>
</dependency>

相關文章