私はクラスの束をJavaのリフレクションでロードしようとしています。すべてが正常に動作しているようです(クラスが見つからない場合は例外を処理しています)。Class.forName()が特定のクラスで動作していません
しかし、Class.forname()の呼び出しではなく内部メソッドによってスローされない別の例外が発生しているため、それをキャッチすることもできません。
try {
URL url = Class.forName(qualifiednameOfTheClass);
} catch (ClassNotFoundException ex) {
// ok class not found can be handled
} catch (Exception e){
// catch every other exception just to try to get the strange exception
}
ので、このコードのすべては、私はクラスの多くにそれを使用しています働いているし、それが働いていると(時にはそれが時にはそれがない見つかっ):
は、ここに私のコードです。
しかし、正しく動作しないケースが1つあり、その理由を理解できません。私のコードは、例外を発生さqualifiednameOfTheClass = sun.security.krb5.SCDynamicStoreConfig
の場合:エラーで見ることができるよう
Exception in thread "mythread-1" java.lang.UnsatisfiedLinkError: no osx in java.library.path at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1886) at java.lang.Runtime.loadLibrary0(Runtime.java:849) at java.lang.System.loadLibrary(System.java:1088) at sun.security.action.LoadLibraryAction.run(LoadLibraryAction.java:67) at sun.security.action.LoadLibraryAction.run(LoadLibraryAction.java:47) at java.security.AccessController.doPrivileged(Native Method) at sun.security.krb5.SCDynamicStoreConfig.(SCDynamicStoreConfig.java:39) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:190) at com.myclass.getJARFromClassForName(JavaId.java:510) at com.myclass.getJARUrl(Id.java:550) at com.myclass.collectInformation(Graph.java:366) at com.myclass.createNode(Graph.java:166) at com.myclass.Graph.(Graph.java:143) at com.myclass2.run(myclass2.java:246) at java.lang.Thread.run(Thread.java:745)
だから、私たちも、私のコードのように、一般的なキャッチでキャッチすることができない、それがされている理由を私は理解できないこの奇妙な例外を持っています何が実際にこのosxライブラリ(私はLinux上にあります)
EDIT:このリンクはhttp://www.straub.as/java/pocketapi/index7.htmlですがドイツ語ですので私はgoogle translateで読んでいますそれは正しいですが、そこにリストされているクラスはClass.forname()自体では再現できないと言っています。
本当ですか?これにリフレクションをロードできない理由があるのですか、何か間違っていますか?