Jar dosyalarını java dosyasıyla ekleme ve komut isteminde derleme


121

3 jar dosyam ve bu jar dosyalarına bağlı olan bir .java dosyam var. .Java dosyasını bir komut istemi kullanarak bu jar dosyalarıyla nasıl derlerim?


9
"javac -help" yazın
Sean Patrick Floyd


2
umarım bu size yardımcı olur ..
Fahim Parkar

2
Kendime not: Çalıştırmak istediğiniz java dosyasının adından önce -cp / -classpath bayrağını kullanmalısınız, aksi takdirde bayrağı yok sayacaktır. java -cp ".;magic.jar" Footamam java Foo -cp ".;magic.jar"değil.
Dmitry

Yanıtlar:


108

Jar dosyalarınızı "-cp" seçeneğini kullanarak "javac" komutuna dahil edebilirsiniz.

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

"-Cp" yerine "-classpath" da kullanabilirsiniz.

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

"CLASSPATH" ortam değişkenini doğru şekilde ayarlayarak her derleme yaptığınızda kavanozları dahil edebilirsiniz. Ortam değişkeni, herhangi bir java dosyasını derlemek / yürütmek için kullanılması gereken kavanozların ve sınıfların bulunduğu yolu depolar. Dosyanızı her derlediğinizde kavanozları tek tek eklemeniz gerekmez.

Sınıf yolunu bir ortam değişkeni olarak ayarlamak için farklı makinelerin farklı yöntemleri vardır. Windows, Linux vb. İçin komutlar farklıdır.

Bu blogda daha fazla ayrıntı bulabilirsiniz .

http://javarevisited.blogspot.com/2011/01/how-classpath-work-in-java.html

7
javac -classpath ".:/home/path/mail.jar;/home/path/servlet.jar" MyJavaFile.javabenim için çalıştı. Mac kullanıyordum. Bir yerlerde ':' unix için kullanıldığını okudum.
Sri

2
Bu komutu kullandım ancak jar dosyasında bulunan sınıfa erişmeye çalıştığımda ClassNotFoundException alıyorum.
Muhammed Rampurawala

3
ne gelmez .:mi? aptalca bir soruysa özür dilerim, ama bana açık değil.
Miranda

1
@kensen. Yazım hatası. değiştirin: (iki nokta üst üste) ile noktalı virgül (;)
Pankaj Shinde

Yukarıdakiler, ubuntu'da benim için çalışmadı. Tırnak işareti olmadan denedim ve işe yaradı. Ör. javac -cp .:/home/path/mail.jar:/home/path/servlet.jar; MyJavaFile.java
Alfaz Jikani


20

Sözdizimi, Windows dos komutu üzerinde çalışacaktır:

javac -cp ".;first.jar;second.jar;third.jar" MyJavaFile.java

4
Yukarıdaki komutu başarıyla uyguladıktan sonra java sınıf dosyası nasıl çalıştırılır?
Yash Agrawal

java -cp first.jar: second.jar: third.jar MyFile
Krsna Chaitanya

15

Ortam değişkeni ayarları aracılığıyla tüm bağımlılık jar dosyalarını sınıf yolunuza eklemeyi deneyin veya aşağıdaki adımları kullanın:

  1. Komut istemini açın.
  2. Dizini, derlemek istediğiniz java dosyasının konumuna değiştirin.
  3. Bağımlılık jar dosyalarınız için sınıf yolunu aşağıda gösterildiği gibi ayarlayın:

    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. Şimdi java dosyanızı derleyebilirsiniz. (komut: javac YourJavaFile.java)

Bunun bağımlılık sorununuzu çözeceğini umuyoruz.


15

Aşağıdakiler adımlar,

  1. Tüm kavanozları ve .java dosyanızı aynı klasöre kopyalayın (Uzun yoldan bahsetmek yerine dosya adlarından bahsetmek daha kolay olacaktır. Yine de jar ve .java'yı ayrı klasörlerde tutabilirsiniz).

  2. Derlemek için,

    javac -cp .:<file_1_name>.jar:<file_2_name>.jar <prog_name>.java
  3. Yürütmek için

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

Umarım bu yardımcı olur!


1
Nasıl uygulanacağını da gösterdiğin için teşekkürler. Noktalı iki nokta üst üste ne yapıyor? Geçerli dizin ve dosya ayırıcı mı?
ThisClark

Evet, geçerli dizin ve bir Unix dosya ayırıcısıdır (Windows'ta noktalı virgüldür).
MathuSum Mut

6

Bu .class dosyasını oluşturacaktır:

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

Bu, sınıf dosyasını çalıştıracaktır:

java -cp [jarname with specified path]: [java filename]

1
java komutu hata gösteriyor Neden: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory Derlemekjavac -classpath "/home/scorncer/Downloads/spark-core-2.3.jar" MyFile.java istiyorum ** ve ** çalıştırjava -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

Bunu dene.

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

2

Derleme zamanında ve çalışma zamanında bağımlılıkları belirtmeniz gerekir.

Derlemek için bu biçimi kullanın

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

Misal:

javac -cp "ojdbc6.jar;c:\programs" Main.java

Bu cevap, doğru olsa da, diğer cevapların henüz söylemediği hiçbir şeyi eklemiyor gibi görünüyor. Bu ve diğer cevaplar arasında bazı temel farklar varsa, cevabınızın neden farklı olduğunu açıklamak daha iyi olacaktır.
DaveyDaveDave

Bağımlılıkları çalışma zamanında ve derleme zamanında belirtmekten bahsettiniz, ancak bunların çalışma zamanında nasıl belirleneceğini açıklamadınız.
Michael Fulton

1

Bazen aşağıdaki değişikliği yapmak işe yarar:

java -cp ".;%CLASSPATH%" classfilename 

Not: Windows ÜZERİNE. $CLASSPATHBunun yerine linux kullanımı için .


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

5
Bu kod soruyu çözebilirken, sorunun nasıl ve neden çözüldüğüne dair bir açıklama da dahil olmak üzere , gönderinizin kalitesini artırmaya gerçekten yardımcı olur ve muhtemelen daha fazla oy almanıza neden olur. Sadece şimdi soran kişi için değil, gelecekte okuyucular için soruyu cevapladığınızı unutmayın. Açıklamalar eklemek ve hangi sınırlamaların ve varsayımların geçerli olduğuna dair bir gösterge vermek için lütfen yanıtınızı düzenleyin .
çift ​​bip sesi

0

Ubuntu kullanıyorsanız:

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

Klasör konumuna git (Paket yapısı dışında)

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

Not: Lütfen dosya konumlarına ve paket adlarına bakın


-1

Pencereler için

  1. java dosyalarının komut isteminde bulunduğu dizine bağlanın.
  2. sınıf yolunu ayarlayın (burada d = klasör adı) sınıf yolu olarak ayarlayın = C: \ d1 \ d2 \ d3 \ d4 \ d5 \ d6 \ d7.jar;
  3. enter tuşuna basın ve
  4. şimdi java dosyasını derleyin javac dosyaadı.java
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.