Saya mencoba menjalankan aplikasi Java, tetapi mendapatkan kesalahan ini:
java.lang.ClassNotFoundException:
Setelah titik dua muncul lokasi kelas yang hilang. Namun, saya tahu bahwa lokasi tersebut tidak ada karena kelas tersebut terletak di tempat lain. Bagaimana cara memperbarui jalur kelas itu? Apakah ini ada hubungannya dengan jalur kelas?
java
class
classpath
classnotfoundexception
pengguna2426316
sumber
sumber
Jawaban:
Jalur kelas Anda rusak (yang merupakan masalah yang sangat umum di dunia Java).
Bergantung pada bagaimana Anda memulai aplikasi, Anda perlu merevisi argumen ke
-cp
, entri Jalur-Kelas Anda di MANIFEST.MF atau tata letak disk Anda.sumber
Jalur kelas adalah daftar lokasi tempat kelas memuat.
'Lokasi' ini bisa berupa direktori, atau file jar.
Untuk direktori, JVM akan mengikuti pola yang diharapkan untuk memuat kelas. Jika saya memiliki direktori C: / myproject / class di classpath saya, dan saya mencoba memuat kelas com.mycompany.Foo , itu akan mencari di bawah direktori kelas untuk direktori bernama com , lalu di bawah itu direktori bernama mycompany , dan akhirnya itu akan mencari file bernama Foo.class di direktori itu.
Dalam contoh kedua, untuk file jar, itu akan mencari file jar untuk kelas itu. File jar sebenarnya hanyalah kumpulan direktori yang di-zip seperti di atas. Jika Anda mengekstrak file jar, Anda akan mendapatkan banyak direktori dan file kelas mengikuti pola di atas.
Jadi JVM melintasi jalur kelas dari awal sampai akhir mencari definisi kelas saat mencoba memuat definisi kelas. Misalnya, di classpath:
C: / myproject / kelas; C: /myproject/lib/stuff.jar; C: /myproject/lib/otherstuff.jar
JVM akan mencoba melihat kelas direktori terlebih dahulu, lalu masuk stuff.jar dan terakhir di otherstuff.jar .
Saat Anda mendapatkan ClassNotFoundException, itu berarti JVM telah melintasi seluruh jalur kelas dan tidak menemukan kelas yang Anda coba rujuk. Solusinya, seperti yang sering terjadi di dunia Java, adalah memeriksa jalur kelas Anda.
Anda mendefinisikan classpath pada baris perintah dengan mengatakan java -cp dan kemudian classpath Anda. Dalam IDE seperti Eclipse, Anda akan memiliki opsi menu untuk menentukan jalur kelas Anda.
sumber
Ini solusi terbaik saya temukan sejauh ini.
Misalkan kita memiliki paket yang disebut
org.mypackage
berisi kelas:dan file yang menentukan paket ini disimpan secara fisik di bawah direktori
D:\myprogram
(di Windows) atau/home/user/myprogram
(di Linux).Struktur file akan terlihat seperti ini:
Ketika kita memanggil Java, kita tentukan nama aplikasi untuk menjalankan:
org.mypackage.HelloWorld
. Namun kita juga harus memberi tahu Java di mana mencari file dan direktori yang mendefinisikan paket kita. Jadi untuk meluncurkan program, kita harus menggunakan perintah berikut:sumber
Jika Anda mengetahui jalur kelas atau jar yang berisi kelas tersebut, tambahkan ke classpath Anda saat menjalankannya. Anda dapat menggunakan classpath seperti yang disebutkan di sini:
di Windows
di UNIX / Linux
sumber
Coba ini jika Anda menggunakan maven. Saya menggunakan maven untuk proyek saya dan ketika saya melakukan
mvn clean install
dan mencoba menjalankan program, ia mengeluarkan pengecualian. Jadi, saya membersihkan proyek dan menjalankannya lagi dan berhasil untuk saya.Saya menggunakan IDE eclipse.
Untuk Pengecualian Kelas Tidak Ditemukan saat menjalankan uji Junit, coba jalankan
mvn clean test
sekali. Ini akan mengkompilasi semua kelas pengujian.sumber
Untuk menambahkan lokasi kelas ke jalur kelas Anda melalui baris perintah, cukup tambahkan
-cp
atau-classpath
dan lokasi kelas saat menjalankannya. YAITUAtau jika Anda menjalankan IDE seperti eclipse, Anda dapat mengklik kanan
project -> build path -> configure build path
dan menambahkan JAR eksternal yang berisi kelas Anda ke jalur build, maka seharusnya berfungsi dengan baik.sumber
Gunakan ';' sebagai pemisah. Jika variabel lingkungan Anda disetel dengan benar, Anda akan melihat pengaturan Anda. Jika PATH dan CLASSPATH Anda benar, windows harus mengenali perintah tersebut. Anda TIDAK perlu me-restart komputer Anda saat menginstal Java.
sumber
Tambahkan jalur lengkap file jar ke CLASSPATH. Dalam penggunaan linux:
export CLASSPATH=".:/full/path/to/file.jar:$CLASSPATH"
. Cara lain yang berhasil (tanpa mengedit CLASSPATH) adalah membuka ritsleting jar di folder proyek saat ini.Cara tidak berhasil untuk saya:
1) Menggunakan
-cp
opsi dengan jalur lengkap file jar.2) Menggunakan
-cp
hanya dengan nama jar ketika berada di folder saat ini3) Menyalin toples ke folder proyek saat ini
4) Menyalin toples ke lokasi standar toples java (/ usr / share / java)
Solusi ini dilaporkan untuk kelas com.mysql.jdbc.Driver di mysql-connector-java.5 - *. Jar, bekerja di linux dengan OpenJDK versi 1.7
sumber
Naik ke atas dan hapus pernyataan import jika ada, dan impor ulang kelas. Tetapi jika bukan itu masalahnya, lakukan pembersihan, lalu buat. Apakah Anda menggunakan Netbeans atau Eclipse?
sumber
Saya mengalami ini juga dan mencoba semua solusi lainnya. Saya tidak memiliki file .class di folder HTML saya, saya hanya memiliki file .java. Setelah saya menambahkan file .class, program tersebut bekerja dengan baik.
sumber
Ini bisa terjadi jika classpath Anda tidak benar
Mari kita menempatkan kelas serializable dan kelas deserializable di bawah nama proyek yang sama. Anda menjalankan kelas serializable, membuat objek serializable di folder tertentu. Sekarang Anda membutuhkan data yang didesearisasi. Sementara itu, jika Anda mengubah nama proyek, itu tidak akan berfungsi. Anda harus menjalankan kelas yang dapat diserialkan terlebih dahulu, kemudian deserialisasi file tersebut.
sumber
Jika Anda menggunakan maven coba maven perbarui semua proyek dan paksa untuk snapshot. Ini juga akan membersihkan dan membangun kembali semua jalur kelas .. Ini menyelesaikan masalah saya ..
sumber
saya baru saja melakukannya
1.Invalidasi cache dan mulai ulang
2. Bangun kembali proyek saya yang memecahkan masalah
sumber
Saya mencoba menjalankan .jar dari kode C # menggunakan
Process
kelas. Kode java berjalan dengan sukses dari eclipse tetapi tidak dari studio visual C # dan bahkan mengklik langsung pada file jar, itu selalu berhenti denganClassNotFoundException:
pengecualian. Solusi untuk saya, adalah mengekspor program java sebagai "file JAR yang dapat dijalankan" daripada "File JAR". Semoga bisa membantu seseorang.sumber
Ini dapat terjadi di Windows setelah pembaruan java di mana versi lama java SDK tidak ada dan versi baru hadir. Saya akan memeriksa apakah IDE Anda menggunakan versi java SDK yang diinstal (IntelliJ: CTRL + SHIFT + ALT + S)
sumber
Jika Anda telah menambahkan beberapa pustaka (Pihak Ketiga) ** dan Memperluas ** kelas Aplikasi
Kemudian itu mungkin terjadi.
Untuk itu, Anda harus mengatur
multiDexEnabled true
dan menggantiApplication
kelas perluasan Anda denganMultiDexApplication
.Ini akan diselesaikan.
sumber
Pertanyaan Umum Dasar - Jawaban Umum Paling Sederhana;)
Dengan adanya informasi ini, saya akan membuat asumsi bahwa Anda mungkin mencoba pendekatan dasar untuk pengkodean, membangun / mengompilasi, dan menjalankan aplikasi konsol sederhana seperti "Hello World", menggunakan beberapa editor teks sederhana dan beberapa Command Shell.
Galat ini terjadi dalam skenario bera:
Dengan kata lain, gunakan:
PS Penambahan ekstensi file .class menghasilkan kesalahan yang sama. Pastikan juga untuk memiliki folder bin Java (JDK / JRE) di PATH Variabel Lingkungan sistem operasi. (Cari untuk lebih jelasnya posting lain tentang ini) PPS Apakah asumsi saya benar?
sumber
Jika Anda menggunakan maven, periksa apakah Anda memiliki plugin ini di
pom.xml
:Ini akan menempatkan ketergantungan Anda (alasan pengecualian) ke toples Anda.
FYI : ini akan mencakup semua dependensi yang digelembungkan di toples terakhir
sumber
Dalam kasus saya kelas dilempar sebagai kelas tidak ditemukan pengecualian memiliki properti yang terkait dengan sertifikat ssl. Tutup gerhana dan buka sebagai "Jalankan sebagai Administrator" lalu masalah teratasi. Karena gerhana memiliki izin terkait, itu akan menimbulkan pengecualian semacam itu.
sumber
Letakkan semua kode di blok percobaan lalu tangkap pengecualian di blok tangkap
sumber