Java 加载您自己的SecurityManager或禁用现有的
我想加载我自己的Java 加载您自己的SecurityManager或禁用现有的,java,Java,我想加载我自己的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(S
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
- 在本文中,我了解到可以加载您自己的SecurityManager
- 我还读到有可能禁用SecurityManger
你会建议我用什么方法来解决这个问题?它是可以解决的吗 您不能也永远不能重写以
java开头的包中的类。
;它与SecurityManager无关,而是在ClassLoader::preDefineClass
考虑到这意味着你所遵循的推理路线存在严重错误(tm);你能解释一下你为什么需要这样做吗?首先,你应该试着解释一下你为什么需要这样做,也许有类似AOP的替代方案。