Bagaimana cara memasukkan file jar dengan file java dan mengkompilasi di command prompt

121

Saya memiliki 3 file jar dan file .java yang bergantung pada file jar ini. Bagaimana cara mengkompilasi file .java dengan file jar ini menggunakan command prompt?

pengguna1177567
sumber
9
ketik "javac -help"
Sean Patrick Floyd
2
harap ini membantu Anda ..
Fahim Parkar
2
Catatan untuk diri sendiri: Anda harus menggunakan flag -cp / -classpath sebelum nama file java yang ingin Anda jalankan, jika tidak maka akan mengabaikan flag. java -cp ".;magic.jar" Footidak apa-apa java Foo -cp ".;magic.jar"tidak.
Dmitry

Jawaban:

108

Anda dapat memasukkan file jar Anda ke dalam perintah "javac" menggunakan opsi "-cp".

javac -cp ".:/home/path/mail.jar:/home/path/servlet.jar;" MyJavaFile.java

Selain "-cp", Anda juga bisa menggunakan "-classpath"

javac -classpath ".:/home/path/mail.jar:/home/path/servlet.jar:" MyJavaFile.java

Anda dapat menyertakan jars setiap kali Anda mengompilasi dengan menyetel variabel lingkungan "CLASSPATH" dengan benar. Variabel lingkungan akan menyimpan jalur tempat jar dan kelas yang perlu digunakan untuk mengompilasi / menjalankan file java apa pun. Anda tidak perlu memasukkan toples satu per satu setiap kali Anda mengompilasi file Anda.

Mesin yang berbeda memiliki metode berbeda untuk menyetel classpath sebagai variabel lingkungan. Perintah untuk Windows, Linux, dll berbeda.

Anda dapat menemukan lebih banyak detail di blog ini .

http://javarevisited.blogspot.com/2011/01/how-classpath-work-in-java.html
kensen john
sumber
7
javac -classpath ".:/home/path/mail.jar;/home/path/servlet.jar" MyJavaFile.javabekerja untuk saya. Saya menggunakan mac. Saya membaca bahwa ':' digunakan untuk unix.
Sri
2
Saya telah menggunakan perintah ini tetapi ketika mencoba mengakses kelas yang ada di file jar, saya mendapatkan ClassNotFoundException.
Mohammed Rampurawala
3
apa yang .:dilakukan? maaf jika itu pertanyaan yang bodoh, tapi itu tidak jelas bagi saya.
Miranda
1
@sensen. Kesalahan ketik. ganti: (titik dua) dengan titik koma (;)
Pankaj Shinde
Di atas tidak berhasil untuk saya di ubuntu. Saya mencoba tanpa tanda kutip dan berhasil. Ex. javac -cp .:/home/path/mail.jar:/home/path/servlet.jar; MyJavaFile.java
Alfaz Jikani
24

Silakan coba di Linux

javac -cp jarfile source file 

CONTOH: -

javac  -cp .:/jars/* com/template/*.java
Jamsheer
sumber
Ketika saya mencoba CONTOH: - , dengan .:/jarsdiganti dengan direktori tempat file JAR saya berada, saya mendapatkan pesan kesalahan javac: invalid flag: /location/of/first/jar/file.jar.
Arturo don Juan
stackoverflow.com/questions/27915204/… harap rujuk ini, ini mungkin menyelesaikan masalah Anda
Jamsheer
20

Sintaks akan bekerja pada perintah windows dos:

javac -cp ".;first.jar;second.jar;third.jar" MyJavaFile.java
pengguna2573056
sumber
4
Setelah berhasil mengeksekusi perintah di atas, bagaimana cara menjalankan file kelas java?
Yash Agrawal
java -cp first.jar: second.jar: third.jar MyFile
Krsna Chaitanya
15

Coba tambahkan semua file jar dependensi ke jalur kelas Anda melalui pengaturan variabel lingkungan atau gunakan langkah-langkah di bawah ini:

  1. Buka command prompt.
  2. Ubah direktori ke lokasi file java yang ingin Anda kompilasi.
  3. Setel jalur kelas untuk file jar dependensi Anda seperti yang ditunjukkan di bawah ini:

    set classpath=C:\Users\sarath_sivan\Desktop\jars\servlet-api.jar; C:\Users\sarath_sivan\Desktop\jars\spring-jdbc-3.0.2.RELEASE; C:\Users\sarath_sivan\Desktop\jars\spring-aop-3.0.2.RELEASE;

  4. Sekarang, Anda dapat mengkompilasi file java Anda. (perintah: javac YourJavaFile.java)

Semoga ini akan menyelesaikan masalah ketergantungan Anda.

Sarath Kumar Sivan
sumber
15

Berikut langkah-langkahnya,

  1. Salin semua jars dan file .java Anda dalam folder yang sama (Akan lebih mudah untuk menyebutkan nama file daripada menyebutkan jalur yang panjang. Meskipun Anda dapat menyimpan jar dan .java di folder terpisah).

  2. Untuk mengkompilasi,

    javac -cp .:<file_1_name>.jar:<file_2_name>.jar <prog_name>.java
  3. Untuk mengeksekusi,

    java -cp .:<file_1_name>.jar:<file_2_name>.jar <prog_name>

Saya harap ini membantu!

orang bodoh
sumber
1
Terima kasih juga telah menunjukkan cara mengeksekusi. Apa yang dilakukan titik dua lagi? Ini direktori saat ini dan pemisah file?
ThisClark
Ya, ini adalah direktori saat ini dan pemisah file Unix (di Windows, tanda titik koma).
MathuSum Mut
6

Ini akan membuat file .class:

javac -classpath "[jarname with specified path]" [java filename]

Ini akan menjalankan file kelas:

java -cp [jarname with specified path]: [java filename]
Isaq
sumber
1
perintah java menunjukkan kesalahan Disebabkan oleh: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory Saya ingin mengkompilasi ** javac -classpath "/home/scorncer/Downloads/spark-core-2.3.jar" MyFile.javadan ** menjalankan java -cp /home/scorncer/Downloads/spark-core-2.3.jar: MyFile.java also i tried java -cp /home/scorncer/Downloads/spark-core-2.3.jar: MyFile
Yash Agrawal
5

Coba ini.

javac -cp .:jars/jar1:jars/jar2:jars/jar3 com/source/*.java
Shravya
sumber
2

Anda perlu menentukan dependensi dalam waktu kompilasi serta waktu proses

Untuk mengkompilasi gunakan format ini

javac -cp "*.jar;classfile_path" filename.java

Contoh:

javac -cp "ojdbc6.jar;c:\programs" Main.java
ArockiaRaj
sumber
Jawaban ini, meski benar, sepertinya tidak menambahkan apa pun yang belum dikatakan oleh jawaban lain. Jika ada perbedaan utama antara jawaban ini dan jawaban lainnya, akan lebih baik untuk menjelaskan mengapa jawaban Anda berbeda.
DaveyDaveDave
Anda menyebutkan menentukan dependensi pada waktu proses serta waktu kompilasi tetapi tidak menjelaskan cara menentukannya pada waktu proses.
Michael Fulton
1

beberapa kali membuat perubahan berikut berhasil:

java -cp ".;%CLASSPATH%" classfilename 

Catatan: DI Windows. Untuk penggunaan linux $CLASSPATHsebagai gantinya.

Guru
sumber
1
javac -cp jars/jar1:jars/jar2:jars/jar3 abc.java
pratap
sumber
5
Meskipun kode ini dapat menyelesaikan pertanyaan, termasuk penjelasan tentang bagaimana dan mengapa ini menyelesaikan masalah akan sangat membantu meningkatkan kualitas posting Anda, dan mungkin menghasilkan lebih banyak suara. Ingatlah bahwa Anda menjawab pertanyaan untuk pembaca di masa depan, bukan hanya orang yang bertanya sekarang. Harap edit jawaban Anda untuk menambahkan penjelasan dan memberikan indikasi batasan dan asumsi apa yang berlaku.
bip dua kali
0

Jika Anda menggunakan Ubuntu:

/opt/JavaServices/sqlite $ export CLASSPATH=/opt/JarFiles/XXXX.jar:/opt/JarFiles/XXXX.jar:/opt/JavaServices/;javac SQLiteSample.java

Pergi ke lokasi folder (Di luar struktur paket)

/opt/JavaServices $ export CLASSPATH=/opt/JarFiles/XXXXX.jar:/opt/JarFiles/XXXXX.jar:/opt/JavaServices/;java sqlite.SQLiteSample

Catatan: Silakan lihat lokasi file dan nama paket

srihari
sumber
-1

Untuk windows

  1. sambungkan ke direktori tempat file java ada di command prompt.
  2. setel jalur kelas (di sini d = nama folder) set jalur kelas = C: \ d1 \ d2 \ d3 \ d4 \ d5 \ d6 \ d7.jar;
  3. tekan enter dan
  4. sekarang kompilasi file java javac filename.java
pertanda
sumber