上下文我正在编写一个Java系统,其中的代码在非常严格的沙箱中执行。一个查询(由一个或多个类组成)在执行期间只允许访问一个文件夹(以及文件夹中包含的子文件夹和文件)。我通过使用SecurityManager和每次查询执行一个新的ClassLoader来强制执行沙盒。当使用defineClass在ClassLoader中定义类时,我传递了一个包含应授予的文件读取权限的ProtectionDomain。由于并非调用堆栈上的所有对象都具有所需的权限,因此查询中的读取操作在AccessController.doPrivileged(...)block中运行。问题当我直接从doPrivilege