Saat mencoba memulai JUnit-Test saya dari Eclipse, saya mendapatkan "ClassNotFoundException". Saat menjalankan "uji mvn" dari konsol - semuanya bekerja dengan baik. Selain itu, tidak ada masalah yang dilaporkan di Eclipse.
Struktur proyek saya adalah sebagai berikut:
- proyek induk (pom-packaging)
- Proyek web (war-packaging - JUnit-test saya ada di sini)
- Proyek fleksibel
- Proyek konfigurasi
edit: Bagaimana kelas tidak ditemukan? Ini adalah Aplikasi-HelloWorld sederhana tanpa perpustakaan khusus.
Berikut konfigurasi run JUnit saya: teks alt http://www.walkner.biz/_temp/runconfig.png
Testclass (tapi seperti yang saya katakan; itu juga tidak berfungsi dengan HelloWorld sederhana ...):
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import biz.prognoserechnung.domain.User;
import biz.prognoserechnung.domain.UserRepository;
import biz.prognoserechnung.domain.hibernate.UserHibernateDao;
public class UserDaoTest {
/**
* the applicationcontext.
*/
private ApplicationContext ctx = null;
/**
* the user itself.
*/
private User record = null;
/**
* Interface for the user.
*/
private UserRepository dao = null;
@Before
public void setUp() throws Exception {
String[] paths = { "WEB-INF/applicationContext.xml" };
ctx = new ClassPathXmlApplicationContext(paths);
dao = (UserHibernateDao) ctx.getBean("userRepository");
}
@After
public void tearDown() throws Exception {
dao = null;
}
@Test
public final void testIsUser() throws Exception {
Assert.assertTrue(dao.isUser("John", "Doe"));
}
@Test
public final void testIsNoUser() throws Exception {
Assert.assertFalse(dao.isUser("not", "existing"));
Assert.assertFalse(dao.isUser(null, null));
Assert.assertFalse(dao.isUser("", ""));
}
}
Jawaban:
Saya telah menjumpai situasi itu beberapa kali dan, setelah banyak upaya, saya menemukan solusinya.
Periksa jalur build proyek Anda dan aktifkan folder keluaran tertentu untuk setiap folder. Pergi satu per satu melalui setiap folder sumber proyek Anda dan setel folder keluaran yang akan digunakan maven.
Misalnya, proyek web Anda
src/main/java
harustarget/classes
berada di bawah proyek web, kelas uji harustarget/test-classes
juga di bawah proyek web dan sebagainya.Menggunakan konfigurasi ini akan memungkinkan Anda untuk menjalankan pengujian unit di gerhana.
Satu saran lagi, jika pengujian proyek web Anda memerlukan beberapa file konfigurasi yang ada di bawah sumber daya, pastikan untuk menyertakan folder itu sebagai folder sumber dan untuk membuat konfigurasi jalur-build yang tepat.
Semoga membantu.
sumber
@Ignore
semua tempat dan pintasan gui!Pendekatan Carlos membantu! Eclipse - java.lang.ClassNotFoundException
Coba periksa classpath dari konfigurasi junit run:
bekerja untuk saya.
sumber
classpath build Anda benar, itulah sebabnya Anda dapat mengompilasi. jalur kelas untuk JUnit Anda perlu diperiksa. buka menu Run dan pilih 'dialog run terbuka.' di sana Anda akan melihat pohon di sebelah kiri dengan JUnit sebagai opsi. buka node itu dan temukan dan pilih pengujian Anda. di panel kanan Anda akan melihat tab untuk classpath. lihat untuk memastikan bahwa kelas Anda yang coba dibuat instance-nya akan ditemukan.
edit:
ini tampaknya menjadi masalah dengan maven dan perilakunya setelah rilis mengubah folder keluaran Eclipse default. saya telah melihat solusi yang dijelaskan di mana
mvn clean test
trik ataudengan tiga kasus pertama, ada laporan tentang masalah yang berulang. yang terakhir terlihat paling baik bagi saya, tetapi jika tidak berhasil, coba yang lain.
di sini dan di sini adalah beberapa info
sumber
Masalahnya mungkin kehilangan file kelas di folder build Anda. Salah satu solusinya adalah membersihkan proyek dan membangunnya kembali.
sumber
Mengaktifkan [x] Gunakan JAR sementara untuk menentukan jalur kelas (untuk menghindari batasan panjang jalur kelas ) di dalam tab jalur kelas dari konfigurasi Jalankan melakukan trik untuk saya.
Jika proyek Anda besar dan Anda memiliki banyak ketergantungan dari proyek saudara lain dan ketergantungan maven, Anda mungkin mencapai batasan panjang jalur kelas dan ini tampaknya satu-satunya solusi (selain membuat direktori untuk Anda repo maven lokal lebih pendek (milik kami sudah dimulai) di c: / m2)
sumber
Ada banyak saran yang berbelit-belit di sini.
Saya telah mengalami masalah ini beberapa kali dengan proyek Maven setelah memindahkan sumber daya dengan drag 'n' drop, atau melakukan refactoring nama kelas.
Jika ini terjadi, cukup salin (jangan pindahkan) masalah Test Case (
.java
) melalui terminal / browser file ke lokasi lain,right-click -> Delete
di Eclipse dan pilih untuk menghapus pada disk ketika diberi opsi, pindahkan / salin file yang disalin ke lokasi file asli, kemudian pilih proyek Anda di Eclipse dan tekan F5 untuk menyegarkan sumber daya.Ini cepat dan mudah dilakukan, dan selalu memperbaiki masalah saya secara permanen.
sumber
Saya memiliki masalah yang persis sama tetapi saya menemukan jawabannya! Buka file proyek Anda dan klik kanan padanya, lalu klik
Refresh
atau tekan F5. Kemudian coba dan jalankan. Jika masih tidak berhasil maka lupakan saja, karena saya memiliki masalah yang sama PERSIS dan itu berarti versi Eclipse Anda adalah sampah.sumber
Ini adalah solusi saya untuk masalah tersebut. Tentu saja, banyak hal yang dapat menyebabkannya terjadi. Bagi saya, Maven2 (bukan plugin untuk Eclipse) mengatur profil gerhana untuk menggunakan pembangun yang berbeda (aspekJ) tetapi saya tidak memiliki plugin di eclipse./
http://rbtech.blogspot.com/2009/09/eclipse-galileo-javalangclassnotfoundex.html
Bersulang Ramon Buckland
sumber
Hak Sachin: Bahkan dengan jalur kelas yang benar, tab masalah akan menunjukkan bahwa beberapa ketergantungan atau Sumber daya / proyek memiliki kesalahan yang perlu diperbaiki agar maven secara otomatis membangun dan membuat kelas ketika Anda membuat atau membuat perubahan dalam kelas pengujian Anda .
"Hai,
Ini sangat tua Juli (tahun yang mana) tetapi saya memiliki masalah yang sama.
Masalah sebenarnya menemukan bahwa eclipse tidak dapat menghasilkan file kelas untuk file java, classpath benar.
Lihat tab masalah dan periksa apakah proyek Anda kehilangan sesuatu / file. Anda dapat membuat proyek baru dan menambahkan file satu per satu dan membangunnya sampai berhenti mengkompilasi dan membuat kelas (periksa ruang kerja / proj / bin / package / folder untuk kelas)
itu aneh tapi benar, ecplise gagal memenuhi karena 4 dari 20 file java menggunakan satu gambar yang hilang. dan sebagai hasilnya tidak ada file java yang dikompilasi.
CLASSPATH tidak menjadi masalah di sini. "
sumber
Kami memiliki pengecualian yang tepat (menggunakan SpringSource Tools, tomcat, di Win7) dan penyebabnya adalah kami telah memperbarui nama file (mengganti nama file) dari SubDomain.java menjadi Subdomain.java (D vs d) dan entah bagaimana bertabrakan meskipun SpringSource menampilkan nama baru Subdomain.java. Solusinya adalah menghapus file (melalui SpringSource) dan membuatnya lagi dengan nama Subdomain.java dan menyalin-tempel konten sebelumnya. Sederhana seperti itu.
sumber
Saya menyelesaikan jalur Bulit itu ---> perpustakaan ---> tambahkan perpustakaan ---> Junit, periksa junit4
sumber
klik
project->properties->Java build path->Source
dan periksa setiapsrc
folder apakah masih ada atau baru dihapus. Perbaiki jalur yang hilang atau jalur yang salah dan buat kembali dan jalankan pengujian. Ini akan memperbaiki masalah.sumber
Yang saya lakukan hanyalah Properties -> Java Build Path -> Order and Export -> Aktifkan semua kotak yang tidak dicentang -> pindahkan Junit ke atas
sumber
Mencoba
bekerja setelah
Tes Maven 2 LifeCycle >>
sumber
Saya telah mencoba semua solusi di halaman ini: menyegarkan proyek, membangun kembali, semua proyek bersih, memulai ulang Eclipse, mengimpor ulang (bahkan) proyek, membangun kembali maven dan menyegarkan. Tidak ada yang berhasil. Apa yang melakukan pekerjaan yang menyalin kelas untuk sebuah nama baru yang berjalan dengan baik - aneh tapi benar.
Setelah bertahan dengan ini untuk beberapa waktu, saya hanya memperbaikinya dengan:
Run
menuRun Configurations
Run Configuration
dengan menekan delete atau mengklik X merah.Sesuatu pasti telah kacau dengan konfigurasi proses yang di-cache.
sumber
Menghapus proyek dari gerhana (Bukan dari hard disk) yang dengan cara membersihkan ruang kerja dan mengimpor kembali proyek ke gerhana kembali berhasil untuk saya.
sumber
Biasanya masalah ini terjadi saat menjalankan
java
alat aplikasi java tidak dapat menemukan file kelas.Sebagian besar di proyek maven kami melihat masalah ini karena masalah sinkronisasi Eclipse-Maven . Untuk mengatasi masalah ini: Maven-> Perbarui Konfigurasi
sumber
Sudahkah Anda mencoba mengklik kanan pada root proyek Anda, memilih "properties", dan memastikan bahwa CLASSPATH sudah benar? Jika saya mengingatnya dengan benar, begitulah cara Anda melakukannya.
Apa saja tentang cara Eclipse menjalankan pengujian unit yang mengharuskan Anda menambahkan junit JAR ke runtime CLASSPATH dengan cara khusus?
Saya menggunakan IntelliJ, jadi saya tidak memiliki masalah ini.
Saya akan memeriksa Eclipse sendiri, tetapi saya lebih suka tidak memilikinya di desktop saya.
sumber
Hmm, terlihat agak aneh, coba jalankan dengan anotasi berikut di bagian atas kelas:
dan beri tahu saya bagaimana Anda melakukannya.
Periksa apakah Anda juga telah mengaktifkan build secara otomatis. Jika Anda ingin memastikan bahwa kelas pengujian Anda sedang dikompilasi dengan benar, bersihkan folder target Maven (dan folder bin apa pun yang mungkin digunakan Eclipse). Apakah Anda juga menggunakan m2eclipse, karena menurut saya ini sedikit bermasalah.
sumber
Solusi untuk masalah saya yang serupa: libs tidak valid. Jika Anda melihat di file .classpath proyek, Anda akan melihat tag classpathentry dengan key / value kind = "lib". Beberapa dari saya salah.
Saya tidak menemukan ini sampai saya mematikan pengaturan Validasi. Artinya, ada begitu banyak kesalahan dalam file JSP, dll, sehingga kesalahan classpath tidak terbukti (atau bahkan mungkin muncul). Akibatnya, tidak ada yang dikompilasi ke dalam folder keluaran tujuan, tetapi tidak ada kesalahan yang membantu tentang alasannya.
sumber
Harap arahkan ke JDK yang benar dari Windows> Preferensi> Java> JRE Terinstal.
Jangan arahkan ke jre, arahkan ke JDK yang tepat. Saya menunjuk ke JDK 1.6U29 dan menyegarkan proyek.
Selanjutnya, masalah hilang dan Tes jUnit berfungsi dengan baik.
Terima kasih,
-Tapas
sumber
Saya telah mengalami kesalahan yang sama di Eclipse baru-baru ini, yaitu, Eclipse IDE tidak dapat menemukan kelas pengujian Unit tidak peduli bagaimana saya mengubah konfigurasinya. Belajar dari posting sebelumnya di sini dan di situs web lain, saya telah memeriksa dua kali dan tiga kali memeriksa classpath dan info sumber, dan berpindah ke atas dan ke bawah folder sumber dan perpustakaan, baik di "Run Configuration" dan "Java Build Path "config windows, dan saya juga telah membersihkan Proyek dan membangunnya kembali, tetapi tidak ada trik yang berhasil untuk saya. Proyek Java tertentu adalah proyek terkompilasi ANT lama dan memiliki banyak botol yang disertakan dalam perpustakaan Eclipse.
Kemudian, saya mengubah kelas pengujian unit untuk menambahkan metode main () dan mengklik kanan untuk "Jalankan Sebagai" Aplikasi Java alih-alih pengujian JUnit, dan tiba-tiba, Eclipse tampaknya terbangun dan mengidentifikasi kelas dengan benar. Setelah itu, saya mengembalikannya ke aplikasi pengujian Unit, dan masih berfungsi.
Ini tampaknya merupakan bug di Eclipse, saya menduga sejumlah besar perpustakaan (> 260) mungkin membingungkan kemampuan JVM untuk menemukan kelas JUnit saya.
sumber
Saya terkena masalah ini juga dan dapat memberikan solusi yang memadai untuk kasus saya. Jika project Eclipse Anda memiliki file .classpath di root project Anda (lihat di tampilan Navigator, bukan di tampilan Package Explorer), pastikan bahwa classpathentry Maven Anda muncul sebelum classpathentry JRE Container Anda.
Jika project Anda tidak memiliki file .classpath, Anda dapat mengedit Java Build Path proyek Anda untuk mengganti Order dan Export. Jika proyek Anda memiliki file .classpath dan Anda hanya mengubah pengurutan di Java Build Path, Anda akan melihat bahwa pengurutan tidak terpengaruh dan masalah akan terus terjadi.
Dan sebuah proyek-> bersih tidak pernah merugikan banyak hal setelah Anda melakukan perubahan.
sumber
Pastikan konfigurasi peluncuran pengujian Anda TIDAK berisi baris berikut, ATAU coba aktifkan manajemen dependensi Maven otomatis.
sumber
Saya mencoba semua yang saya baca di posting yang panjang ini dan, yang luar biasa, yang berhasil bagi saya adalah, daripada mengklik kelas pengujian dan memilih
Run as JUnit test
, mengklik metode pengujian dan menjalankan sebagaiJUnit test
. Saya tidak tahu kenapa?sumber
Tes JUnit dari dalam gerhana memberi saya juga NoClassDefFoundError. Menjalankan 'mvn clean test' dari baris perintah memberi saya kesalahan berikut pada beberapa toples: header LOC tidak valid (tanda tangan buruk) Menghapus toples ini dari gudang m2 lokal dan menjalankan 'mvn clean test' lagi memecahkan masalah saya.
sumber
Saya memiliki masalah yang sama. Semua yang saya lakukan adalah,
saya). Artefak Eclipse yang dihasilkan
mvn clean eclipse:eclipse
ii). Segarkan proyek dan jalankan kembali pengujian junit Anda. Seharusnya bekerja dengan baik.
sumber
Selanjutnya, PERIKSA GANDA dialog "Web Deployment Assembly".
Ini dapat ditemukan: Project Properties-> Deployment Assembly.
Baru-baru ini saya memiliki plugin eclipse yang memodifikasi salah satu proyek web saya, dan menambahkan ~ secara misterius ~ menambahkan direktori pengujian maven / src / test / java, / src / test / resources ke Deployment Assembly. UGGGG !!!
Itulah mengapa proyek saya bekerja dengan baik ketika saya membangun & menerapkan langsung maven ke tomcat, tidak ada ClassNotFoundExceptions ... Namun, ketika saya melakukan penerapan melalui Eclipse, Whammo !! Saya mulai mendapatkan ClassNotFoundExceptions karena TestCode akan diterapkan.
Eric
sumber
Itu berarti pom.xml Anda memiliki masalah yang belum terselesaikan. Buka tampilan masalah selesaikan sesuai. Kemudian Anda akan dapat menjalankan kasus pengujian dengan sukses tanpa menemui classnotfoundexception.
sumber
Mengubah urutan artefak classpath di Java Build Path menyelesaikannya untuk saya.
Ini harus memperbaikinya.
sumber