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?


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

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

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

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.


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!


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]

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

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

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.


1
javac -cp jars/jar1:jars/jar2:jars/jar3 abc.java

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


-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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.