2

別の質問のコードを使用して、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);
4

1 に答える 1

2

アプレット コードにデジタル署名して (プロンプトが表示されたら、ユーザーに同意してもらいます)、完全な権限を取得します。

于 2012-09-06T22:28:50.500 に答える