Saya menyusun ulang kelas saya seperti biasa, dan tiba-tiba mendapat pesan kesalahan berikut. Mengapa? Bagaimana cara memperbaikinya?
java.lang.SecurityException: class "Chinese_English_Dictionary"'s signer information does not match signer information of other classes in the same package
at java.lang.ClassLoader.checkCerts(ClassLoader.java:776)
Cara sederhana untuk mengatasinya adalah dengan mencoba mengubah urutan file jar yang diimpor yang dapat dilakukan dari (Eclipse). Klik kanan pada paket Anda -> Build Path -> Configure build path -> References and Libraries -> Order and Export. Coba ubah urutan toples yang berisi file tanda tangan.
sumber
A.Jika Anda menggunakan maven, cara yang berguna untuk men-debug bentrok jar adalah:
Misalnya, untuk pengecualian:
kami melakukan:
Outputnya:
menunjukkan bentrok servlet-api 2.5 dan javax.servlet 3.0.0.x.
B. Petunjuk berguna lainnya (bagaimana men-debug pengecualian keamanan dan bagaimana mengecualikan maven deps) ada pada pertanyaan di informasi Penandatangan tidak cocok .
sumber
Dalam kasus saya, saya telah menduplikasi versi JAR dari BouncyCastle di jalur perpustakaan saya: S
sumber
Saya memiliki pengecualian serupa:
Akar masalah adalah saya menyertakan perpustakaan Hamcrest dua kali. Setelah menggunakan file pom Maven. Dan saya juga menambahkan perpustakaan JUnit 4 (yang juga berisi perpustakaan Hamcrest) ke jalur pembangunan proyek. Saya hanya perlu menghapus JUnit dari jalur build dan semuanya baik-baik saja.
sumber
Hal ini dapat terjadi dengan proxy yang diinstrumentasi cglib karena CGLIB menggunakan informasi penandatangannya sendiri, bukan informasi penanda tangan kelas target aplikasi.
sumber
Nama: net / sf / jasperreports / engine / util / xml / JaxenXPathExecuterFactory.c lass SHA-256-Digest: q3B5wW + hLX / + lP2 + L0 / 6wRVXRHq1mISBo1dkixT6Vxc =
sumber
Jika Anda menjalankannya di Eclipse, periksa toples proyek apa pun yang ditambahkan ke jalur build; atau lakukan control-shift-T dan pindai beberapa toples yang cocok dengan namespace yang sama. Kemudian hapus jar yang berlebihan atau usang dari jalur pembangunan proyek.
sumber
Saya mengalami masalah ini dengan Eclipse dan JUnit 5. Solusi saya terinspirasi oleh jawaban sebelumnya oleh user2066936 Ini adalah mengkonfigurasi ulang urutan pustaka impor:
sumber
Dalam kasus saya itu adalah konflik nama paket. Proyek saat ini dan pustaka referensi yang ditandatangani memiliki satu paket yang sama
package.foo.utils
. Baru saja mengubah nama paket yang rawan kesalahan proyek saat ini menjadi yang lain.sumber
Utas agak terlalu tua tetapi karena saya terjebak cukup lama dalam hal ini, inilah perbaikannya (semoga ini membantu seseorang)
Skenario saya:
Nama paketnya adalah: com.abc.def. Ada 2 file jar yang berisi kelas-kelas dari paket ini, katakanlah jar1 dan jar2, yaitu beberapa kelas ada di jar1 dan yang lainnya di jar2. File jar ini ditandatangani menggunakan keystore yang sama tetapi pada waktu yang berbeda dalam build (yaitu secara terpisah). Itu tampaknya menghasilkan tanda tangan yang berbeda untuk file di jar1 dan jar2.
Saya meletakkan semua file di jar1 dan membangun (dan menandatangani) semuanya bersama-sama. Masalahnya hilang.
PS: Nama paket dan nama file jar hanyalah contoh
sumber
Jika Anda menambahkan semua toples dari bouncycastle.org (dalam kasus saya dari crypto-159.zip), hapus saja yang untuk JDK yang tidak berlaku untuk Anda. Ada redundansi. Anda mungkin hanya membutuhkan toples "jdk15on".
sumber
Pertanyaan ini telah berlangsung lama tetapi saya ingin menyampaikan sesuatu. Saya telah mengerjakan tantangan proyek Musim Semi dan saya menemukannya di Eclipse IDE. Jika Anda menggunakan Maven atau Gradle untuk Spring Boot Rest API, Anda harus menghapus Junit 4 atau 5 di jalur build dan menyertakan Junit di file build pom.xml atau Gradle Anda. Saya rasa itu juga berlaku untuk file konfigurasi yml.
sumber
Ini juga terjadi jika Anda menyertakan satu file dengan nama berbeda atau dari lokasi berbeda dua kali, terutama jika ini adalah dua versi berbeda dari file yang sama.
sumber
Saya bisa memperbaikinya.
Akar Penyebab: Ini adalah masalah umum saat menggunakan implementasi Sun JAXB dengan toples bertanda tangan. Pada dasarnya implementasi JAXB mencoba untuk menghindari refleksi dengan membuat kelas untuk mengakses properti secara langsung tanpa menggunakan refleksi. Sayangnya, ini menghasilkan kelas baru ini dalam paket yang sama dengan kelas yang diakses dari mana kesalahan ini berasal.
Resolusi: Tambahkan properti sistem berikut untuk menonaktifkan pengoptimalan JAXB yang tidak kompatibel dengan stoples bertanda: -Dcom.sun.xml.bind.v2.bytecode.ClassTailor.noOptimize = true
Ref: https://access.redhat.com/site/solutions/42149
sumber
Berdasarkan respons @Mohit Phougat, jika Anda menjalankan Groovy dengan anotasi @Grab, Anda dapat mencoba mengatur ulang anotasi tersebut.
sumber
ini terjadi pada saya ketika menggunakan JUnit + yakinlah + hamcrest, dalam hal ini, jangan tambahkan junit ke jalur pembangunan, jika Anda memiliki proyek maven, ini menyelesaikan saya, di bawah ini adalah pom.xml
sumber
Saya menjalankan JUNIT 5 dan juga mereferensikan jar eksternal Hamcrest. Tetapi Hamcrest juga merupakan bagian dari perpustakaan JUNIT 5 . Jadi, saya harus mengubah urutan file jar Hamecrest eksternal ke atas perpustakaan JUNIT 5 di jalur pembuatan.
sumber