Saya mencoba untuk menjalankan aplikasi Java, tapi mendapatkan pesan kesalahan ini:
jawa.lang.ClassNotFoundException:
Setelah kolon datang lokasi kelas yang hilang. Namun, saya tahu bahwa lokasi itu tidak ada karena hotel ini terletak di tempat lain. Bagaimana saya dapat memperbarui jalan dari kelas itu? Apakah itu memiliki sesuatu untuk dilakukan dengan kelas jalan?
Sebuah classpath adalah daftar lokasi untuk memuat kelas-kelas dari.
Ini 'lokasi' bisa berupa direktori, atau file jar.
Untuk direktori, JVM akan mengikuti sebuah pola untuk memuat sebuah kelas. Jika saya memiliki direktori C:/myproject/classes dalam classpath, dan saya mencoba untuk memuat kelas com.mycompany.Foo, itu akan terlihat di bawah kelas direktori direktori bernama com, kemudian di bawah direktori yang disebut mycompany, dan akhirnya ia akan mencari file bernama Foo.class dalam direktori tersebut.
Dalam contoh kedua, untuk file jar, itu akan mencari file jar untuk kelas itu. File jar ini pada kenyataannya hanya zip koleksi dari direktori seperti di atas. Jika anda unzip file jar, kamu'll mendapatkan banyak direktori dan file kelas mengikuti pola di atas.
Jadi JVM melintasi classpath dari awal sampai akhir untuk mencari definisi dari kelas ketika mencoba untuk memuat definisi kelas. Misalnya, dalam classpath :
C:/myproject/classes;C:/myproject/lib/stuff.jar;C:/myproject/lib/otherstuff.jar
JVM akan mencoba untuk melihat di direktori kelas pertama, kemudian di stuff.jar dan akhirnya di otherstuff.jar.
Ketika anda mendapatkan ClassNotFoundException, itu berarti JVM telah dilalui seluruh classpath dan tidak menemukan kelas anda've berusaha untuk referensi. Solusinya, seperti yang sering di Jawa dunia, adalah untuk memeriksa classpath anda.
Anda menentukan classpath pada baris perintah dengan mengatakan java -cp dan kemudian anda classpath. Dalam sebuah IDE seperti Eclipse, anda'll memiliki menu pilihan untuk menentukan classpath anda.
Classpath anda rusak (yang merupakan very masalah umum di Jawa dunia).
Tergantung pada bagaimana anda memulai aplikasi anda, anda perlu untuk merevisi argumen -cp
, Kelas-Jalan masuk di MANIFEST.MF atau tata letak disk anda.
Ini adalah solusi saya temukan sejauh ini.
Misalkan kita memiliki sebuah paket yang disebut org.mypackage
yang berisi kelas-kelas:
dan file yang mendefinisikan paket ini disimpan secara fisik di dalam direktori D:\myprogram
(pada Windows) atau /home/user/myprogram
(di Linux).
Struktur file akan terlihat seperti ini:
Ketika kita memohon Jawa, kita tentukan nama aplikasi untuk menjalankan: org.mypackage.HelloWorld
. Namun kita juga harus memberitahu Jawa di mana untuk mencari file dan direktori mendefinisikan paket kami. Jadi untuk memulai program, kita harus menggunakan perintah berikut:
CATATAN: Anda harus menjalankan di atas
jawa
perintah tidak peduli apa lokasi anda saat ini. Tapi ini tidak terjadi untukjavac
. Untuk menyusun, anda bahkan dapat langsung pergi ke direktori dimana anda telah anda.jawa
file dan langsung mengeksekusijavac ClassName.java
.
Jika anda tahu jalan kelas atau toples yang berisi kelas kemudian menambahkannya ke classpath anda saat menjalankan itu. Anda dapat menggunakan classpath seperti yang disebutkan berikut ini:
pada Windows
java -classpath .;yourjar.jar YourMainClass
pada UNIX/Linux
java -classpath .:yourjar.jar YourMainClass
Coba ini jika anda menggunakan maven. Saya menggunakan maven untuk proyek saya dan ketika saya melakukan mvn clean install
dan mencoba untuk menjalankan program itu melempar pengecualian. Jadi, saya bersih proyek dan jalankan lagi dan itu bekerja untuk saya.
Saya menggunakan eclipse IDE.
Untuk Kelas Tidak Ditemukan Terkecuali ketika menjalankan Junit test, coba jalankan mvn clean test
sekali. Ini akan mengkompilasi semua tes kelas.
Tambahkan path lengkap dari file jar ke CLASSPATH.
Di linux menggunakan: export CLASSPATH=".:/full/path/to/file.jar:$CLASSPATH"
. Cara lain yang bekerja (tanpa editing CLASSPATH) adalah unzip jar di saat folder proyek.
Cara didn't bekerja untuk saya:
Menggunakan -cp
pilihan dengan path lengkap dari file jar.
Menggunakan `-cp'with hanya nama jar bila terletak dalam folder saat ini
Menyalin jar untuk saat ini proyek folder
Menyalin jar untuk standar lokasi jawa botol (/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
Untuk menambahkan lokasi dari hotel ke classpath anda melalui baris perintah hanya menambahkan -cp
atau -classpath
dan lokasi kelas sambil berjalan itu. I. E.
java -cp "c:/location/of/file" YourProgram
Atau jika anda're menjalankan IDE seperti eclipse anda dapat klik kanan pada proyek -> membangun jalan -> configure build path
dan add external JAR yang berisi kelas anda untuk membangun jalan maka harus bekerja dengan baik.
Gunakan ';' sebagai pemisah. Jika variabel lingkungan anda diatur dengan benar, anda akan melihat pengaturan anda. Jika anda PATH dan CLASSPATH adalah benar, windows harus mengenali perintah-perintah tersebut. Anda TIDAK perlu me-restart komputer anda ketika menginstal Java.
Hal itu bisa terjadi jika anda classpath adalah tidak benar
Mari kita mengandaikan sebuah serializable kelas dan deserializable kelas bawah yang sama projectname. Anda menjalankan serializable kelas, menciptakan serializable objek dalam folder tertentu. Sekarang anda perlu desearialized data. Sementara itu, jika anda mengubah nama proyek ini tidak akan bekerja. Anda harus menjalankan serializable kelas pertama dan kemudian secara file.
Saya mencoba untuk menjalankan .jar dari kode C# menggunakan Proses
kelas. Kode java berhasil berlari dari eclipse tapi itu doesn't dari C# visual studio dan bahkan mengklik langsung pada file jar, selalu berhenti dengan ClassNotFoundException:
pengecualian. Solusi untuk saya, adalah ekspor program java sebagai "Runnable JAR file" bukan "File JAR". Berharap dapat membantu seseorang.
Jika anda telah menambahkan beberapa (Pihak Ketiga)perpustakaan dan Memperpanjang * Aplikasi** kelas
Maka mungkin terjadi.
Untuk itu, anda harus mengatur multiDexEnabled benar
dan mengganti extended Aplikasi
kelas MultiDexApplication
.
Itu akan diselesaikan.
Dasar Pertanyaan Generik - Sederhana Generik Menjawab ;)
Mengingat informasi yang saya akan membuat asumsi bahwa anda mungkin mencoba pendekatan dasar untuk coding, bangunan/kompilasi dan menjalankan sederhana konsol aplikasi seperti "Hello World", menggunakan beberapa editor teks sederhana dan beberapa Perintah Shell.
Kesalahan ini terjadi di fallowing skenario:
..\Somepath>javac HelloWorld.java
..\Somepath>java HelloWorld.class
Dengan kata lain, gunakan:
..\Somepath>java HelloWorld
P. S. menambahkan ekstensi file .kelas menghasilkan kesalahan yang sama. Juga pastikan untuk memiliki Java's (JDK/JRE) bin folder di sistem operasi's Variabel Lingkungan's JALAN.(Lookup untuk lebih detail lain posting ini) P. P. S aku benar dalam asumsi saya/s?