Bu soruyu kopyalamaya başlamadan önce, ne bildiğimi, diğer soruları okuduğumu ve bunun neden benim için çalışmadığını açıklayacağım.Yansıma ile java.lang.SecurityException
Buradaki amacım, .jar için sahip olduğum bir java tabanlı oyun yansıma uygulamaktır. Tutulma projemde onu harici bir kütüphane olarak ekliyorum. diğer sorular belirtildiği gibi
Ben çizgi Şimdi
Class clazz = Client.class;
hatayı
java.lang.SecurityException: class "Client"'s signer information does not match signer information of other classes in the same package
alıyorum. Bu hatanın nedeni, farklı şekilde imzalanmış iki başvurulan kütüphanem var mı? (Belki de java'nın farklı sürümleriyle derlenmişler?).
Başvuru yaptığım yalnızca iki kitaplık, JRE sistemi (projem 1.7 üzerine kurulu) ve oyunun .jar'ı.
.jar, 1.6'da derlenmişse bu hata oluşuyor olabilir mi? Projemi JRE 1.6'yı kullanıyor muyum? Müşterinin hangi JRE sürümünün derlendiğini nasıl anlarım?
Teşekkürler!
Düzenleme: Sahip olduğum başka bir düşünce, belki de oyunun .jar dosyasının farklı imzalara sahip sınıflara sahip olması (belki de yansımayı durdurmak). Mümkün mü?
Kodum ve .jar aynı kaynaklardan olmadığından, jar/Client.class imzasını belirleme ve onu taklit etme/çoğaltmanın herhangi bir yolu var mı? – k9b
@ k9b İmzalama anahtarının sahibi değilseniz, kopyalamanın bir yolu yoktur. Bu bir Jar dosyasının imzalanmasını engeller. – SubOptimal
Bunu yapmanıza izin verildiyse, imzalanmış bir kavanozun paket özel sınıflarına erişebilir ve genişletebilirsiniz, bu da güvenli bir şey gibi görünmez. (Signer'ın perspektifinden, yani.) – biziclop