2016-06-18 16 views
-1

編集:クラスローダー階層を使用する利点は何ですか?

jdkのjre/libフォルダにすべてのjarファイルをダンプして、BootstrapClassLoaderを唯一のクラスローダとして使用することはできませんか?

+0

何が問題なのか全く分かりません。あなたは、あなたが持っているいくつかの事実、あるいは何を指摘しようとしていますか?回答したいと思うすべての人々が十分に理解できるように質問を編集してください。 –

+0

フィードバックありがとうございます。私は質問を編集しました。 –

+0

ブートストラップクラスローダーとシステムクラスローダーの違いは、なぜ分かりますか?あるいは、システムクラスローダーを超えて追加のクラスローダーが存在するのはなぜですか? – the8472

答えて

0

各プロジェクトには、異なる依存関係(および異なるバージョン)があります。クラスローダーは同じクラスの異なるバージョンをうまく扱うことができません。クラスの最初のクラス(たとえば、com.example.MyClass(少なくとも、すべてがJDK 9でモジュール化されるまで)を取るだけです。例えば、mavenプロジェクトは$ HOME/.m2/repositoryから依存関係を読み込みます。

+0

答えをありがとう。しかし、なぜ、どこで依存関係の異なるバージョンを持つ必要がありますか? –

+0

マシン上では、通常、複数のJavaプログラムがあります(C/Python/Perl/Rubyプログラムが複数あるように)。それぞれは、ロギングライブラリのような依存関係の異なるバージョンを持つことができます。 – Salil

1

ブートストラップクラスローダーは、特別な目的を持っています。 URL ClassLoaderを追加すると、追加のJAR /ディレクトリを読み込むことができますが、パッケージに組み込むことはできません。これにより、JVMがハッキングされることを防ぎます。

In短くは2つ、システムクラスローダとユーザーの 'クラスローダーです。

+0

@ Peter-独自のクラスローダーを作成してloadClassメソッドをオーバーライドすることができます。その際、委譲モデルを実装する必要はなく、カスタムクラスローダーはブートストラップクラスローダーによってロードされたクラスをロードするだけです。 –

+0

@RahulMathurそれ以外はあなたを許さないが、試してみることができる。 –

+0

JVMはどのように私を止めるつもりですか? lib/ext上のファイルのリストを維持し、クラス名がリストのどの項目とも一致する場合、ClassNotFound例外をスローしますか? –

関連する問題