2017-09-21 7 views
0

私たちの製品をデバッグしている間に、私は既に奇妙なNoClassDefFoundErrorを見つけました。クラスロードログからの出力に気づきました(-verbose:classをオンにします)。NoClassDefFoundError - しかし、冗長クラスによってロードされたクラス:クラス

[Loaded com.xxx.yyy.preferences.PreferencesMgr from file:/C:/Users/xxx/.gradle/caches/zzz.jar 

PreferencesMgrはNoClassDefFoundErrorがの原因となるだけのクラスです:

java.lang.NoClassDefFoundError: Could not initialize class com.xxx.yyy.preferences.PreferencesMgr 

だから、JVMが実際には、すでにクラスsucessfullyをロードしているようです。なぜNoClassDefFoundErrorがあるのですか?どのような可能性?

+0

一部の依存関係が存在しない可能性があります。完全なログを表示する。 – talex

+0

ログが大きすぎてここに投稿できません。私はログを通過しますが、他の例外はありません。 – qingjinlyc

+0

ここで 'NoClassDefFoundError'はPreferencesMgrの初期化時に必要な別のクラスを示すことができます。いくつかの情報のための初期化シーケンスを確認してください。 – cooltoad

答えて

0

今は明らかです。 PreferenceMgrは、特定のバージョンにバグがある別のjarに依存します。 gradleでは、jarファイルのバグバージョンを設定します。したがって、PreferenceMgrをロードすると、classloaderはMAUtilsのバグをトリガし、結果はNoClassDefFoundErrorになります。

0

別のパッケージでも、競合を引き起こすPreferenceMgrクラスが定義されている可能性があります。 Gradleを使用すると、いくつかのコマンドを使って依存関係を調べることができます:Check this post

関連する問題