2

NoClassDefFoundError は、さまざまなコンテキストでさまざまな種類のメッセージを表示します

文脈によって、つまり、

コンテキスト 1: を削除するsapjco3.jarと、メッセージは次のようになります。

java.lang.NoClassDefFoundError: com/xxx/xxx/AbapException

コンテキスト 2: webapp lib に jar ファイルを追加すると、メッセージは次のようになります。

java.lang.NoClassDefFoundError: com.xxx.xxx.CpicDriver

java.lang.NoClassDefFoundError実行時にクラスが見つからない場合にスローされることを理解しています。

しかし、なぜメッセージでクラスを表すのに違いがあるのでしょうか?つまり、スラッシュ (パス) とドット (パッケージ) を使用するのはなぜですか?

4

2 に答える 2

2

NoClassDefFoundError 例外のjavadoc を見ると、2 つのコンストラクターがあり、そのうちの 1 つがパラメーターとしてメッセージを受け入れていることがわかります。

したがって、見つからないクラスの名前のフォーマットは、例外をスローするコードに依存します。

私はsapjcoを知りませんが、おそらく2つのクラスは異なるクラスローダーによってロードされています...

于 2012-05-02T12:52:15.537 に答える
0

java.lang.NoClassDefFoundErrorのようです:com / xxx / xxx/AbapExceptionがありません。これはsapjco3.jarにはありません。

a.classとb.classが必要であり、ロードの順序がa、bであるとします。aとbがクラスパスにない場合は、最初にaが欠落していることになります。クラスパスにaが追加されると、bが欠落します。それが明確であることを願っています。

于 2012-05-02T12:35:53.700 に答える