上面的代码是否检查我们(似乎)是否有足够的权限来运行这段代码。我想知道 new URLClassLoader(new URL[0],getClass().getClassLoader()); 的目的是什么 如果此代码抛出异常会发生什么,以及如果它抛出 Securityexception 如何授予权限// 快速检查我们(似乎)是否有足够的权限运行。 try { JVM jvm = new JVM(); new URLClassLoader(new URL[0],getClass().getClassLoader()); } catch(SecurityException e) { throw new InsufficientPermissionDetected(e); } }catch (BootFailure e) { e.publish(context, home); }
1 回答
暮色呼如
TA贡献1853条经验 获得超9个赞
我想知道 new URLClassLoader(new URL[0],getClass().getClassLoader()); 的目的是什么
这意味着:创建一个新的URLClassloader
从空的 URL 数组加载类/资源,并将此类类加载器作为父类。
然后丢弃生成的类加载器对象。
所以我认为这只是测试是否允许应用程序创建类加载器。
班级JVM
不是我认识的。我不知道那是什么。
如果这段代码抛出异常会发生什么
除了显而易见的事情,什么都不会发生。如果异常是 a ,SecurityException
则将其包装起来并将其作为不同的异常抛出。否则异常传播。
该类InsufficientPermissionDetected
可能是 Hudson 或 Jenkins 类。如果是这种情况,请检查 Hudson 或 Jenkins 代码库的其余部分,看看它是如何处理异常的。
[我如何] 如果抛出则授予权限
SecurityException
这取决于代码在什么平台上执行。
如果您在非沙盒 Java JVM 上运行,您应该已经拥有权限……可以执行所有操作。
如果您在沙盒 Java JVM 上运行,则必须由沙盒机制授予权限。例如,对于受信任的 JAR 文件:
JAR 必须使用用户/用户的 JVM 信任的 CERT 进行签名。
JAR 文件中的代码随后被允许根据生效的策略文件访问受控 API。
如果您在 Android 上运行……不确定。
添加回答
举报
0/150
提交
取消