gpt4 book ai didi

java - 加载您自己的 SecurityManager 或禁用现有的

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:56:26 25 4
gpt4 key购买 nike

我想加载我自己的java.lang.String

public class StringCustomClassFactory {
public static String newInstance() {
URLClassLoader tmp = new URLClassLoader(new URL[] {new URL("file:///home/.../target/classes/") }) {
public Class loadClass(String name) {
if ("java.lang.String".equals(name))
return findClass(name);
return super.loadClass(name);
//exception handling is omitted
}
};
return (String) tmp.loadClass("java.lang.String").newInstance();
//...

但我经常收到异常:

Exception in thread "main" java.lang.SecurityException: Prohibited package name: java.lang
  • 在此tutorial我读过可以加载您自己的 SecurityManager

The security of the system can be compromised if your class loader returned its own value of java.lang.SecurityManager, which did not have the same checks as the real one did.

  • here我读过可以禁用 SecurityManger

你会推荐我什么来解决这个问题,它是否可以解决?

最佳答案

你不能,也永远不能,覆盖以 java. 开头的包中的类;它与 SecurityManager 无关,而是在 ClassLoader::preDefineClass

中强制执行

考虑到这意味着您所遵循的推理路线非常错误(tm);你能解释一下你为什么需要这个吗?

关于java - 加载您自己的 SecurityManager 或禁用现有的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34131529/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com