[英]Load your own SecurityManager or disable existing
我想加載自己的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
如果類加載器返回自己的java.lang.SecurityManager值,系統的安全性可能會受到影響,而java.lang.SecurityManager的檢查沒有真實的那樣。
你會建議我解決這個問題,它是否可以解決?
你不能,也永遠不能覆蓋從java.
開始的包中的類java.
; 它與SecurityManager無關,而是在ClassLoader::preDefineClass
強制執行
考慮到它意味着你正在遵循的推理路線是非常錯誤的(tm); 你能解釋為什么需要這個嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.