Saya sedang mengerjakan webapp JSP / Servlet / Tomcat sederhana untuk kelas saya. Profesor meminta kami untuk menggunakan struktur folder yang sedikit berbeda dari struktur proyek web dinamis default. Daripada menggunakan folder webcontent, dia menginginkan semua kode sumber kita di bawah src / main / java dan src / main / webapp.
Ketika saya menjalankan aplikasi, file selamat datang saya ditampilkan dengan baik, tetapi ketika saya mencoba mengakses servlet saya, saya mendapatkan:
Http 500 SEVERE: Allocate exception for servlet InitDb
java.lang.ClassNotFoundException. Saya cukup yakin ini adalah kesalahan jalur build. Saya memiliki final / src di jalur build tetapi saya menerima peringatan
"Cannot nest 'final/src/main/webapp/WEB-INF/classes' inside 'final/src'. To enable the nesting exclude 'main/' from 'final/src'
Saya memiliki ini di perakitan penerapan saya:
<wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
Ketika saya mengecualikan main / peringatan hilang, tetapi itu tidak memperbaiki masalah. Saya sangat menghargai saran apapun. Terima kasih.
Saya ingin memberikan jawaban non-mavenish untuk utas ini.
Karena kontrol versi dan alasan struktur direktori yang ketat, saya tidak dapat mengikuti jawaban Acheron (jawaban terbaik) untuk melakukan sesuatu yang mirip dengan menghapus
src/
dan menambahsrc/main/java
dansrc/test/java
ke jalur pembuatan.Saya sebenarnya telah terus-menerus berjuang melawan masalah jalur build bersarang ini selama beberapa minggu. Jawaban untuk masalah tersebut diisyaratkan dalam pesan kesalahan:
To enable the nesting exclude 'main/' from 'final/src'
Memperbaiki
Di jalur build Anda, Anda perlu mengedit Anda
Inclusion and Exclusion Patterns
dengan mengklikExcluded: (None)
laluEdit...
:Di sana Anda dapat menambahkan
main/webapp/WEB-INF/classes
sebagai fileExclusion Pattern
. Maka itu akan memungkinkan Anda untuk menambahkanmain/webapp/WEB-INF/classes
ke jalur build sebagai folder sumber terpisah.sumber
Coba ini:
Dari tab perpustakaan:
Hapus perpustakaan aplikasi web Anda:
Tambahkan mereka kembali:
Menyoroti "Perpustakaan Aplikasi Web":
sumber
Saya memiliki masalah yang sama dan jawaban yang benar di atas tidak berhasil untuk saya. Apa yang saya lakukan untuk menyelesaikannya adalah pergi ke
Build Path->Configure Build Path
dan di bawah tab sumber saya menghapus semua sumber (yang hanya memiliki satu sumber) dan mengonfigurasinya dari sana. Saya akhirnya menghapus proyek dari eclipse dan mengimpor proyek maven lagi untuk menghilangkan kesalahan.sumber
Dalam kasus saya, saya memiliki proyek alam gradle di gerhana , masalahnya ada di a
build.gradle
, di mana inisourceSets
ditentukan:Hal ini tampaknya bekerja dengan baik dengan IntelliJ , namun tampaknya dari gerhana tidak seperti sarang
src
,src/java
,src/resources
. Dalam gerhana saya harus mengubahnya menjadi:sumber
Inilah solusi sederhana:
sumber
Anda harus memisahkan sumber dan direktori target tempat keluaran build. Penting juga untuk diperhatikan bahwa tidak ada file kelas yang dapat berakhir di direktori sumber. Ini tidak bertentangan dengan nasihat profesor Anda - sebenarnya dia mempromosikan struktur sumber standar maven untuk ./src/main/java dan ./src/main/webapp. Yang kedua harus menahan mis. file WEB-INF / web.xml wajib tetapi Anda tidak akan pernah menempatkan kelas yang sebenarnya di sana.
Yang perlu Anda ubah adalah direktori target Anda. Saya sarankan menggunakan standar yang sama dan memilih nama "./target" untuk ini. Semua file yang dibangun akan masuk ke sini dan memaketkannya akan menghasilkan artefak yang dapat diterapkan dengan benar. Jika Anda bermigrasi ke menggunakan maven nanti, itu juga akan membantu melakukan ini dengan cara yang skrip dan berulang.
Harapan itu menyelesaikan masalah Anda.
sumber
Solusi yang diterima tidak berfungsi untuk saya, tetapi saya melakukan penggalian pada pengaturan proyek.
Solusi berikut memperbaikinya untuk saya setidaknya JIKA Anda menggunakan Proyek Web Dinamis:
Anda harus bisa menambahkan file src / main / java. Ini juga secara otomatis menambahkannya ke Deployment Assembly.
Peringatan: Jika Anda menambahkan catatan src / test / java, itu juga menambahkannya ke Deployment Assembly. Umumnya, Anda tidak membutuhkan ini. Anda dapat menghapusnya.
sumber
Ini mulai membawa saya ke lubang kelinci besar untuk memperbaiki gangguan dengan Eclipse, namun saya baru saja menghapus proyek dari Eclipse dan mengimpornya kembali untuk memperbaikinya.
sumber
Agar compiler Eclipse berfungsi dengan baik, Anda perlu menghapus final / src dari jalur sumber dan menambahkan final / src / main / java sebagai gantinya. Ini juga dapat menyelesaikan masalah Anda karena sekarang direktori build tidak akan berada di dalam folder sumber Java.
sumber
Itu tergantung pada folder mana seseorang mengatakan "Gunakan sebagai Folder Sumber". Dalam struktur pada gambar, jika seseorang mengatakannya ke folder "target" atau "generated", dia mendapatkan error "nested". Tetapi pada folder "cxf", yang terakhir, disebutkan di bagian 'plugin' pom.xml dan dari mana struktur paket dimulai (seperti yang ditunjukkan pada file .wsdl), yaitu - folder yang tepat untuk melakukannya 'sumber' satu , maka tidak ada kesalahan
sumber
Punya masalah serupa. Apakah langkah-langkah berikut, masalah diselesaikan:
sumber
Buat dua folder:
final/src/
untuk menyimpan kode java sumber, danfinal/WebRoot/
.Anda tidak dapat menggabungkan sumber dan webroot. Saya pikir Anda mungkin salah paham dengan guru Anda.
sumber