我正在创建一个运行下载的 Java 代码的应用程序,并且我希望能够准确指定代码可以访问哪些内置 Java 类。我想这涉及使用 ClassLoader 和 SecurityManager,但我在 google 上找到的内容并没有帮助。
问问题
2979 次
1 回答
0
我认为在您的情况下,您应该创建自定义类加载器或使用配置为从指定 URL 加载类的 UrlClassLoader。请注意,文件系统中的文件可以解释为 URL,所以不用担心。
例如,如果您有 2 个 jar 文件 foo.jar 和 bar.jar。foo.jar 是允许的,bar.jar 仅限于应用程序的一部分。只需将第一个 jar 添加到类加载器的路径中即可。第二个将是不可见的。
如果您希望在访问禁止的类时抛出 SecurityException,您必须实现自己的类加载器。它可能是 2 个 URL 类加载器的组合:一个带有 foo.jar,另一个带有类路径中的 bar.jar。第二个类加载器应该覆盖方法 loadClass 并在每次成功加载类时抛出安全异常。虽然我没有看到这个解决方案的严重好处。
于 2011-02-07T21:26:39.427 回答