私はリフレクションを使用してJava用の逆コンパイラを作成しようとしています(渡されたjarファイルのメソッドシグネチャ情報が必要です)。 URLClassLoader
を使用してjarファイルからクラスをロードし、そのクラスをデコンパイラに渡します。すでにJavaの別の場所からロードされているときにリフレクション用のクラスをロードする
しかし、私は問題に遭遇しました。私が読もうとしているjarには、すでに自分の環境にロードされているクラスの異なるバージョンが含まれています。だから私が電話するとき
ClassLoader myClassLoader = URLClassLoader.newInstance(jars, null);
Class<?> classToDecompile = Class.forName(className, false, myClassLoader);
それは私のjarファイルからクラスを返しませんが、既にロードされている。リフレクションのためだけにクラス情報をロードし、JREからではなく渡されたjarからクラス情報を取得する方法はありますか?
編集:
私がコンパイルしようとしているjarファイルがスローされるセキュリティ例外が発生しjava.langパッケージにクラスが含まれています:
java.lang.SecurityException:禁止パッケージ名:れるjava.lang
スタックトレースとは何ですか? – Ladlestein
さて、私の現在のJREとは違うjava。*のものについてはあまり気にしないので、それをフィルタリングするだけです。 –