java.lang.SecurityException異常

來源:互聯網
上載者:User

Exception in thread "main" java.lang.SecurityException: class "org.eclipse.swt.widgets.UFCComposite"'s signer information does not match signer information of other classes in the same package

什麼情況下可能出現該異常?
當使用者在自己的程式中定義了一個與系統內建的(如jdk,其它庫)同包的類時。
比如在自己的項目中定義了一個
java.lang包。在java.lang包下定義了某個類。載入該類或使用該類時,就會報出SecurityException異常。

 

相關概念:
父親委託機制的優點?
父親委託機制的優點是能夠提高軟體系統的安全性。因為在此機制下,使用者自訂的類載入器不可能載入應該由父載入器載入
的可靠類,從而防止不可靠甚至惡意的代碼代替由父載入器載入的可靠代碼。
例如,java.lang.Object類總是由根類載入器載入(BootStrap),其他任何使用者自訂的類載入器都不可能載入含有惡意代碼的
java.lang.Object類。

 

有幾個重要概念需要理解一下。(與安全有關)

1.命名空間
每個類載入器都有自己的命名空間,命名空間由載入器及所有父載入器所載入的類組成。
在同一個命名空間中,不會出現類的完整名字(包括類的包名)相同的兩個類;在不同的命名空間中,
有可能會出現類的完整名字(包括類的包名)相同的兩個類。

2.運行時包
由同一個類載入器載入的屬於相同包的類組成運行時包。決定兩個類是不是屬於同一個運行時包,不僅
要看它們的包名是否相同,還要看定義類載入器是否相同。只有屬於同一運行時包的類才能互相訪問可見(即預設存取層級)
的類和類成員。這樣的限制能避免使用者自訂的類冒充核心類庫的類,去訪問核心類庫的包可見成員。假設使用者自己定義了一個類
java.lang.Spy,並由使用者自訂的類載入器載入,由於jang.lang.Spy和核心類庫java.lang.*由不同的載入器載入,它們屬於不同的運行時包,所以java.lang.Spy不能訪問核心類庫java.lang包中的可見成員。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.