Java applet不允许您编写自定义的ClassLoader,除非您对applet进行签名.为什么会这样呢?定制的ClassLoader只是用于查找类的工具.除了调用私有的“ defineClass”方法外,您实际上无法加载该类,该方法在某种意义上是“受信任的”代码,它是由VM而不是由applet编写和控制的.这不像获得动态加载类的能力那样获得更多的权限……这根本不算什么.
我猜还有一个问题:是否还有其他方法可以动态地从
byte[] => Class
未签名的小程序允许哪些?
解决方法:
defineClass具有一个ProtectionDomain参数,您可以将其与包含AllPermission的PermissionCollection一起传递,这将使您基本上可以对主机执行任何操作.