Pustaka Anda yang baru dikemas tidak kompatibel dengan backward binary (BC) dengan versi lama. Untuk alasan ini beberapa klien perpustakaan yang tidak dikompilasi ulang dapat melempar pengecualian.
Ini adalah daftar lengkap perubahan dalam Java library API yang dapat menyebabkan klien yang dibuat dengan versi lama dari perpustakaan untuk membuang java.lang. IncompatibleClassChangeError jika mereka berjalan pada yang baru (yaitu melanggar BC):
- Bidang non-final menjadi statis,
- Bidang non-konstan menjadi non-statis,
- Kelas menjadi antarmuka,
- Antarmuka menjadi kelas,
- jika Anda menambahkan bidang baru ke kelas / antarmuka (atau menambahkan kelas-super / antarmuka-super baru) maka bidang statis dari antarmuka-super dari kelas klien C dapat menyembunyikan bidang yang ditambahkan (dengan nama yang sama) yang diwarisi dari kelas super C (sangat jarang terjadi).
Catatan : Ada banyak pengecualian lain yang disebabkan oleh perubahan lain yang tidak kompatibel: NoSuchFieldError , NoSuchMethodError , IllegalAccessError , InstantiationError , VerifyError , NoClassDefFoundError dan AbstractMethodError .
Makalah yang lebih baik tentang BC adalah "Evolving API berbasis Java 2: Mencapai Kompatibilitas Biner API" yang ditulis oleh Jim des Rivières.
Ada juga beberapa alat otomatis untuk mendeteksi perubahan tersebut:
Penggunaan checker kepatuhan japi untuk perpustakaan Anda:
japi-compliance-checker OLD.jar NEW.jar
Penggunaan alat clirr:
java -jar clirr-core-0.6-uber.jar -o OLD.jar -n NEW.jar
Semoga berhasil!