我使用了另一个问题的一些代码来访问Java ClassLoader中的私有字段“classes”。这工作正常,但是当我将它移动到applet时,它会被这个异常搞乱: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);
答案 0 :(得分:2)
对applet代码进行数字签名(然后让用户在出现提示时接受它)以获得完全权限。