2016-06-21 4 views
0

WikipediaからJavaクラスローダーについて学ぼうとは、私は彼らが三の大クラスローダを持っている理由私が見ることができると思います)システムクラスローダー

Javaのクラスローダは、複雑

彼らはあなた自身のクラスローダーを定義できると言います。私は自分自身を定義する際に値を参照してくださいわからないんだけど、不思議Wikipediaから次の引用は本当に私を作る:最も複雑なJAR地獄の問題がいっぱい複雑で を利用する状況で発生

クラスローディングシステム。 Java プログラムでは、単一の「フラット」クラスローダーのみを使用する必要はありませんが、 は、いくつかの(潜在的に非常に多くの)入れ子になった のクラスローダーで構成することができます。異なるクラスローダーによってロードされたクラスは、開発者が完全に理解していない複雑な方法で対話することがあります。 は、分析や説明が難しいエラーやバグにつながり、 が解決します。


これは非常に複雑な場合は、なぜそれを迷惑?すでに定義されている3つのクラスローダーで十分ではありませんか?

(そして、はい、好奇心、それらのために、私は私がずっとFigure 2. Class identity crisisラベルされたグラフィックのように、起こっているはずだと思いませんでした。私は背景がすべてであることを理解しようとしている。ClassCastExceptionに遭遇しなかった)

答えて

1

特定のユースケースではカスタムクラスローダーが必要です。 例:

  • ロード可能な新しいフォルダ/ jarを動的に追加しています。 (アプリケーション全体を再起動せずに)。
  • フォルダ/ jarsを動的にロード可能から削除します。
  • javassistを使用したランタイムバイトコード生成。
  • 同一アプリケーション内の同じクラスの複数のバージョン(実際には同時に使用されます)
関連する問題