2011-02-07 67 views
1

我正在创建一个运行下载的Java代码的应用程序,我希望能够确切指定代码可以访问的内置Java类。我想这涉及到使用ClassLoader和SecurityManager,但是我在谷歌上找到的东西并没有帮助。如何在Java中为用户代码创建类白名单?

回答

0

我认为,你应该创建自定义类加载器或使用UrlClassLoader配置为从指定的URL加载类。请注意,文件系统中的文件可以解释为URL,因此不用担心。

例如,如果您有2个jar文件foo.jar和bar.jar。 foo.jar是允许的,bar.jar仅限于您的应用程序的一部分。只需在类加载器的路径中添加第一个jar即可。第二个将是不可见的。

如果您希望在访问禁止类时抛出SecurityException,那么必须实现您自己的类加载器。它可以是2个URL类加载器的组合:其中一个使用foo.jar,另一个使用类路径中的bar.jar。第二个类加载器应该重载方法loadClass,并在每次成功加载类时抛出安全性异常。虽然我没有看到这个解决方案的好处。

+0

但他在问*内置的Java类*。 – maaartinus 2011-02-07 21:46:16