0

メッセージ値が null の NoClassDefFoundError を受け取りました。どのクラスに初期化の問題があるのか​​ わかりません。最上位のトレースはクラスのコンストラクターであり、クラスの静的部分ではありません。このような例外の原因は何ですか?

java.lang.NoClassDefFoundError
    at com.company.xyz.FooBar.<init>(FooBar:76) 
    ....

FooBar の 76 行目のコード:

drv = data.get( i ).getDrivers();
drvnameToAdd = Msg.getMsg( "msgkey" ); <-- line 76
allNotImported.add( drvnameToAdd );

クラス Msg からのいくつかのコード:

private static final ResourceBundle LANGUAGE_RESOURCES;
static {
    LANGUAGE_RESOURCES = ResourceBundle.getBundle( "com.company.xyz.i18n.LanguageResources" );
}

public static String getMsg( String msgID ) {
    String msg;
    try {
        msg = LANGUAGE_RESOURCES.getString( msgID );
    } catch( Throwable e ) {
        msg = "$" + msgID + "$";
    }
    return msg;
}
4

3 に答える 3

0

ほとんどの場合、コードは特定のバージョンのライブラリに対してコンパイルされ、別のバージョンに対して実行されています。基本的にはリンケージエラーです。問題の原因となっているライブラリを特定することは必ずしも簡単ではありませんが、行番号は、エラー時にロードされているクラスを示している必要があります。

更新:投稿されたスタックトレースで、エラーはクラスcom.company.xyz.FooBarのコンストラクター(76行目)で発生します。これは間違いなくgov.nasa.programs.supersecret.bases.alphacentauriの代用です。

そのクラスは、その時点でロードできない別のクラスに依存している必要があります。おそらく、コンパイルされた正確なバージョンに存在しないためです。実際の問題はチェーンのさらに下流にある可能性があることに注意してください。除外する場合は、そのクラスの依存関係を確認してください。

于 2013-01-23T10:34:24.550 に答える
0

別の .jar ファイルに依存するライブラリ (.jar) ファイルを使用していると思いますが、現在のプロジェクトにはその依存する .jar ファイルが含まれていません。正確な問題を確認できるように、完全なエラー メッセージをリストしてください =D

于 2013-01-23T08:41:04.970 に答える
0

ほとんどの場合、java.lang.NoClassDefFoundError は実際の問題ではありません。その前に別の例外があるはずです。このクラスにアクセスすると NoClassDefFound がトリガーされますが、それはクラスがロードされていないことを意味するだけです。理由はわかりません。76行目に答えがあるかもしれません。

于 2013-01-23T09:04:41.667 に答える