簡體   English   中英

加載您自己的SecurityManager或禁用現有的

[英]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
  • 在本教程中,我已經讀過可以加載自己的SecurityManager

如果類加載器返回自己的java.lang.SecurityManager值,系統的安全性可能會受到影響,而java.lang.SecurityManager的檢查沒有真實的那樣。

你會建議我解決這個問題,它是否可以解決?

你不能,也永遠不能覆蓋從java.開始的包中的類java. ; 它與SecurityManager無關,而是在ClassLoader::preDefineClass強制執行

考慮到它意味着你正在遵循的推理路線是非常錯誤的(t​​m); 你能解釋為什么需要這個嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM