在你複製這個問題之前,我會向你解釋我所知道的,我讀過的其他問題以及爲什麼這不適合我。帶反射的java.lang.SecurityException
我的目標是實現反射基於Java的遊戲,我有.jar。我將它作爲外部庫附加在我的eclipse項目中。
我正在上線
Class clazz = Client.class;
現在的錯誤
java.lang.SecurityException: class "Client"'s signer information does not match signer information of other classes in the same package
在其他問題中提到。這個錯誤的原因是我有兩個被簽名不同的引用庫? (也許這意味着它們是用不同版本的java編譯的?)。
我參考的唯一兩個庫是JRE系統(我的項目基於1.7)和遊戲的jar。
這個錯誤是否會發生,也許如果.jar編譯1.6?我應該使用JRE 1.6重建我的項目嗎?我怎麼知道客戶端編譯的JRE版本?
謝謝!
編輯:我的另一個想法可能是遊戲本身的.jar文件具有不同簽名的類(可能會停止反射)。這可能嗎?
由於我的代碼和.jar不是來自相同的來源,有沒有什麼辦法來確定jar/Client.class的簽名和模仿它/複製它? – k9b 2015-04-07 08:53:20
@ k9b如果您不擁有簽名密鑰,則無法將其複製。這會抵消Jar文件的簽名。 – SubOptimal 2015-04-07 08:58:59
如果你被允許這樣做,你可以訪問和擴展簽名jar包的私有類,這聽起來不是一件安全的事情。 (從簽名者的角度來看,就是這樣)。 – biziclop 2015-04-07 09:26:12