2017-06-06 7 views
1

からEssential Classes Trail私は、次の文を見つけました:JVMの動的リンク障害とは何ですか? OracleのJavaで

Error Class

When a dynamic linking failure or other hard failure in the Java virtual machine occurs, the virtual machine throws an Error. [...]

JavaとJVMのコンテキストで動的リンク障害によって正確に何を意味しますか?これは、実行時にクラスローダーが遭遇する可能性のある問題に関連していますか?

+0

動的リンクとは、JNI/JNAを介して呼び出されるネイティブコードライブラリをJVMに取り込むことを指します。 Windowsの場合、これはDLLになります。これは、プロセスが失敗したことを示します。 –

+1

['LinkageError'](https://docs.oracle.com/javase/8/docs/api/?java/lang/LinkageError.html)とその「直接知られているサブクラス」を参照してください。名前は既に、実行時に間違っている可能性があることを示唆しています... – Holger

答えて

1

Javaでは、Classオブジェクトを動的にロードすることができ、そのクラスとそのインスタンスが現在ロードされているクラスと互換性があるかどうかを検証するロジックを動的リンケージと呼びます。あなたは、クラスやインタフェースを持っている

1):あなたがjava.lang.LinkageErrorの形でリンク障害を得ることができたときに

は、ここで例があります。後でそのインタフェースメソッドのシグネチャを変更し、その新しいインタフェースでVMを起動します。今度は、動的にクラスをロードしようとすると、クラスがインタフェースメソッドのシグネチャの古いバージョンでコンパイルされ、新しいインタフェースメソッドのシグネチャを扱うことができなくなるため、リンケージに失敗します。

2)クラスローダーCL1とCL2から同じクラスをロードします。その後、CL1によってロードされたそのクラスからオブジェクトo1を作成し、そのオブジェクトをCL2によってロードされたコードで使用します。

関連する問題