JAva.lang.NoClassDefFoundErrorエラー

1566 ワード

アプリケーションが走っている間に、突然Caused by:java.lang.NoClassDefFoundError:Could not initialize class com.xxx.xxx.xxx.xxx.xxx.xxxエラーが報告されました.その時の最初の反応は.NoClassDefFoundErrorで、クラスが見つからないに違いありません.そこで急いでコードを見てみると、クラスの呼び出し先にコンパイルエラーが何もないことに気づきました.そうすると迷ってしまいます.なぜNoClassDefFoundErrorエラーが発生したのでしょうか.再コンパイルして一度チェックした後も、同じエラーが報告されるので、後のエラーメッセージに注意が引かれます【Could not initialize】.
 
           初期化できません.つまり、クラスがnewの時に問題が発生しました.そこで、初期化できないクラスをよくチェックしてみると、静的ツールクラスで、構造関数が何もありません.では、構造関数が何の初期化異常がありませんか.そこでコードをよくチェックすると、異常がここに現れる可能性があります.
 static { 
        InputStream in =  XXX.class.getResourceAsStream("/conf/abc.properties"); 
        try {
            prop.load(in);  
        } catch (IOException e) { 
            e.printStackTrace(); 
        } 
     } 

   肝心なのは1行目の InputStream in = XXX.class.getResourceAsStream("/conf/abc.properties");,abc.propertiesがなければ、間違いなく異常が発生し、初期化エラーが発生します.もちろん変なときは、tryになった以上、なぜ最初の行のコードもtryに入れないのか、これではエラーがあっても、スムーズに初期化操作ができます.
    今の解決策は2つのステップで、第1のステップはabc.propertiesを増加して、肝心なのは第2のステップで、すべてのコードをtryの中に入れます.第2歩の鍵は業務の全体的な要求と設計の全体的な要求にあり、いったい中に置くかどうかは全体的に総合的に考慮する必要があるが、前提は、abc.propertiesを簡単に追加するのではなく、この意識が必要で、異常がなければ手を放さないことだ.この意識は,初級プログラマーと中級プログラマーを区別する明らかな標識である.