2016-11-28 32 views
1

私はJVMがjava.lang.NoClassDefFoundErrorのを投げている奇妙な問題とこだわっています。問題を特定する上での助けがあれば、大いに感謝しています。java.lang.NoClassDefFoundErrorが:クラスを初期化できませんでした|静的ブロック

public class AccessorFactory 
{ 
private static Map classMap = null; 
    static 
    { 
     classMap = new HashMap(100); 
     classMap.put("bills", Class.forName("com.example.BillAccessor")); 
    } 
} 

public class BillAccessor 
{ 
    class BillInnerClass 
    { 
     //some code 
    } 
} 

私は3つのクラスAccessorFactory.class、BillAccessor.classとBillAccessor $ BillInnerClass.classを持っています。 3つはすべて同じjarファイルにあり、すべてがクラスパスにあります。

私は最近、BillAccessor $ BillInnerClassクラスで何かを変更し、jarファイルにこのファイルを置き換えると、サーバ(JBoss版)でアプリケーションインスタンスを再起動しました。

ポストは、私はjarファイル内のクラスパスに存在

java.lang.NoClassDefFoundError: Could not initialize class AccessorFactory 

AccessorFactoryクラスを取得しています再起動します。他には何も私はBillAccessor $ BillInnerClass置き換えたことを除いて変更されません。

+0

(a)JBossのシャットダウン、(b)全体のjarの再構築、(c)JBossへのドロップ、そして最後に(d)JBossの再起動を試したことはありますか? – dcsohl

+0

は、以前のexcetionsを探してください。ほとんどの場合、静的初期化子が失敗しました。例えば、 'Class.forName'に例外があるとします。 – eckes

答えて

0

NoClassDefFoundErrorは、通常、JVMが(ClassNotFoundExceptioinとは対照的に)クラスを見つけたが、いくつかの依存クラスを持たないためロードできないことを意味します。

ないあなたが(すべての3つのクラスを含む)全体のjarファイルを再構築しようとしたとJBossの新しいjarファイルを使用する場合は必ず?

関連する問題