Rumah >Java >javaTutorial >Mengapa Pelayan JBoss Saya Melemparkan java.lang.VerifyError Apabila Memulakan Servlet?
Java.lang.VerifyError: Menyelidiki Punca Punca
Java.lang.VerifyError yang terkenal menyerang lagi , mengaburkan isu asas dalam mesej ralat samarnya. Artikel ini menyelidiki kemungkinan sebab ralat yang membingungkan ini mungkin timbul, memfokuskan secara khusus pada isu yang dihadapi:
Senario:
Ajava.lang.VerifyError berlaku apabila memulakan pelayan JBoss yang mengehoskan servlet yang disusun menggunakan JDK 1.5.0_11. Penyusunan semula dengan JDK 1.5.0_15 tidak menghasilkan kejayaan. Mengubah nama kaedah mengubah ralat menjadi tandatangan kaedah yang dicetak separa.
Penerokaan Punca Akar:
1. Perpustakaan Tidak Padan:VerifyError selalunya berpunca daripada penggunaan perpustakaan yang berbeza semasa penyusunan dan masa jalan. Sama seperti kes yang dilaporkan, menyusun dengan satu pustaka (cth.,
Xerces 1) tetapi menggunakan yang lain pada masa jalan (cth., Xerces 2) boleh membawa kepada percanggahan bytecode.
2. Ketidakpadanan Tandatangan Kaedah:
Java mengesahkan bytecode pada masa jalan untuk penyeruan kaedah yang betul. Jika kod bait cuba melakukan tindakan yang tidak dibenarkan, seperti menghantar nilai pulangan kaedah jenis String kepada medan jenis Senarai, VerifyError akan dilemparkan. Ketidakpadanan ini boleh berlaku disebabkan oleh perubahan dalam definisi kelas atau kaedah antara penyusunan dan pelaksanaan.3. Isu Pemuat Kelas:Kadangkala, pemuat kelas pelayan boleh berkelakuan tidak dapat diramalkan, memuatkan kelas dalam susunan yang melanggar kebergantungan. Ini boleh mengakibatkan berbilang versi kelas yang sama dimuatkan, yang berpotensi membawa kepada VerifyErrors.
Petua Penyelesaian Masalah:
Atas ialah kandungan terperinci Mengapa Pelayan JBoss Saya Melemparkan java.lang.VerifyError Apabila Memulakan Servlet?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!