Saya menjalankan proyek Maven yang juga merupakan proyek web dinamis. Saya telah menggunakan semua perpustakaan Spring di Maven. Saya membuatnya web.xml
, tetapi ketika saya memulai server Tomcat 7 saya, saya mendapatkan pesan berikut:
INFO: validateJarFile(C:\Users\mibvzd0\workspace\.metadata\.plugins\
org.eclipse.wst.server.core\tmp2\wtpwebapps\hapi_hl7\WEB-INF\lib\
servlet-api-2.4.jar) - jar not loaded.
See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
Saya mencoba menghapus servlet dari webapp/lib
, tetapi tidak berhasil. Beri tahu saya apa yang harus dilakukan dalam kasus saya.
Jawaban:
File servlet API .jar tidak boleh disematkan di dalam webapp karena, jelas, kontainer sudah memiliki kelas-kelas ini di jalur kelasnya: ia mengimplementasikan antarmuka yang terdapat dalam jar ini.
Dependensi harus berada dalam
provided
cakupan, bukancompile
cakupan default , di pom Maven Anda:sumber
Anda mendapatkan pesan peringatan ini ketika file jar servlet api telah dimuat dalam wadah dan Anda mencoba memuatnya sekali lagi dari
lib
direktori.servlet.jar
darilib
direktori Anda .lib
direktori, pindai jalur build Anda dan hapus jar.Jika Anda menjalankan proyek maven, ubah
javax.servlet-api
dependensi menjadi cakupanprovided
di Anda pom.xml karena container sudah menyediakan jar servlet itu sendiri.sumber
Untuk memperbaikinya, setel cakupan ke disediakan . Ini memberitahu Maven menggunakan kode servlet-api.jar untuk kompilasi dan pengujian saja, tapi TIDAK memasukkannya ke dalam file WAR. Container yang di-deploy akan "menyediakan" servlet-api.jar pada saat runtime.
sumber
Anda mungkin menemukan baris perintah windows berikut berguna dalam melacak file jar yang menyinggung. itu membuat indeks dari semua file kelas di semua toples di folder. Jalankan dari dalam folder lib aplikasi yang Anda terapkan, lalu cari kelas yang melanggar di file index.txt.
sumber
Lingkup Ketergantungan Maven
sumber
Saya telah berjuang dengan masalah ini dan saya telah mencoba berbagai "solusi".
Namun, pada akhirnya, satu-satunya yang berfungsi dan sebenarnya membutuhkan beberapa detik untuk melakukannya adalah: menghapus dan menambahkan kembali instance server baru !
Pada dasarnya, saya mengklik kanan pada server Tomcat saya di Eclipse di bawah Server dan menghapusnya. Selanjutnya, saya telah menambahkan server Tomcat baru. Membersihkan dan menerapkan ulang aplikasi dan saya menyingkirkan kesalahan ini.
sumber
Periksa Di Dalam Direktori Berikut untuk file jar el-api.jar: C: \ apache-tomcat-7.0.39 \ lib \ el-api.jar jika ada, maka di direktori ini aplikasi web Anda WEB-INF \ lib \ el-api.jar toples itu harus dibuang
sumber
ketika pola URL Anda salah, kesalahan ini mungkin terjadi.
misalnya. Jika Anda menulis @WebServlet ("login"), kesalahan ini akan ditampilkan. Yang benar adalah @WebServlet ("/ login").
sumber
Pengecualian dan
provided
ketergantungan tidak akan berfungsi dalam proyek anak.Jika Anda menggunakan warisan dalam proyek Maven, Anda harus menyertakan konfigurasi ini pada
pom.xml
file induk . Anda akan memiliki<parent>...</parent>
bagian di pom.xml Anda jika Anda menggunakan warisan . Jadi Anda akan memiliki sesuatu seperti ini pada orang tua Andapom.xml
:sumber
Pustaka ketergantungan JAX-WS "jaxws-rt.jar" tidak ada.
Buka di sini http://jax-ws.java.net/ . Unduh distribusi JAX-WS RI. Unzip dan salin “jaxws-rt.jar” ke folder library Tomcat “{$ TOMCAT} / lib“. Mulai ulang Tomcat.
sumber
Biasanya ketika Anda melihat pesan ini, itu tidak berbahaya. Jika tertulis
Itu berarti ia mengabaikan servlet-api-2.5.jar Anda karena tomcat sudah memiliki versi bawaan dari jar itu, jadi tidak akan menggunakan milik Anda. Biasanya ini tidak menimbulkan masalah.
Namun jika dikatakan
WEB-INF/lib/my_jar.jar - jar not loaded...Offending class: javax/servlet/Servlet.class
lalu apa yang dapat Anda lakukan (dalam contoh saya, ini adalah toples berbayang) dijalankan
Ketergantungan $ mvn: tree
dan temukan bahwa Anda memiliki ketergantungan transitif pada "sesuatu" yang bergantung pada stoples yang berupa servlet-api atau sejenisnya (misal:)
tomcat-servlet-api-9.0.0
. Jadi tambahkan pengecualian untuk itu ke pom Anda, misalnya: (dalam kasus saya, tomcat, dalam kasus Anda, mungkin yang disebutkan dalam jawaban lain):sumber
Hapus
servlet.jar
dariweb-inf/lib
folder sumber karena tersedia dilib
folder kucing jantan maka itu berfungsi dengan baiksumber