別の質問のコードを使用して、Java ClassLoader のプライベート フィールド「クラス」にアクセスしました。これは問題なく動作しますが、アプレットに移動すると、次の例外でめちゃくちゃになります: access denied (java.lang.RuntimePermission accessDeclaredMembers)
. 私はいくつかの検索を行い、PrivlegedExceptionAction を使用してそれをスキップしようとしましたが、機能していません。だから私の質問はこれです:これをバイパスすることは可能ですか?そうでない場合、クラスのリストを取得する別の方法は何ですか?
リフレクション コード:
final ClassLoader cLoader = getClass().getClassLoader();
final Field f = ClassLoader.class.getDeclaredField("classes");
AccessController.doPrivileged(new PrivilegedExceptionAction() {
public Object run() throws Exception {
f.setAccessible(true);
return null;}});
Vector<Class> classes = (Vector<Class>)f.get(cLoader);
cList.addAll(classes);