Jar dosyasında sınıfı çalıştır


176

/ MyfoldermyJar.jar içinde adında bir jar dosyanız varsa ve ondan çağrılan sınıfı kullanmak istiyorsanız , bunu komut satırından nasıl gerçekleştirirsiniz?myClass

Ben dizine gitmek ve söylemek olacağını düşündüm java -cp myJar.jar.myClassama işe yaramıyor. Herhangi bir yardım mutluluk duyacağız.


java -cp myJar.jar myClassbenim için iyi çalışıyor - komut satırınızda boşluk yerine sahte bir dönem var mı?
Chris Dodd

1
O sınıfı 'kullanmak' istediğinizi söylediğinizde ne demek istiyorsunuz? Özellikle aramak istediğiniz bir ana yöntem var mı?
Marsellus Wallace

Yanıtlar:


256

Kullanın java -cp myjar.jar com.mypackage.myClass.

  1. Sınıf bir paket içinde değilse, o zaman basitçe java -cp myjar.jar myClass.

  2. Bulunan dizinde myJar.jardeğilseniz, şunları yapabilirsiniz:

    1. Unix veya Linux platformlarında:

      java -cp /location_of_jar/myjar.jar com.mypackage.myClass

    2. Windows'ta:

      java -cp c:\location_of_jar\myjar.jar com.mypackage.myClass


10
Sadece ekleyerek - com.mypackage.myClass'ın (yukarıdaki örnekte) diğer kavanozlara bağımlı olması durumunda, aşağıdaki gibi çalıştırın: java -cp bağımlı dosya.jar; bağımlı dosya2.jar; c: \ location_of_jar \ myjar.jar com. mypackage.myClass
akjain

2
Bunun işe yaramadığı durumlarda dikkat edilmesi gereken olası bir başarısızlık yolu: Sınıfınıza giden tam yolunuzun, jar dosyanızdakilerle tam olarak eşleştiğinden emin olun. Eğer unzip -l /location-of-jar/myjar.jar yaparsanız ve com / mypackage / myClass dışında bir şey görürseniz, bu sizin probleminizdir. (Örneğin, bin / com / mypackage / myClass'ı görürseniz, jar dosyanızı oluşturmak için çöp kutusuna cd'ed olmanız gerekir; ne işe yaramazsa.)
Scott C Wilson

MyClass kullan, myClass kullan
Breno Inojosa

Yukarıda deneyerek "ana" iş parçacığı istisna alıyorum java.lang.NoClassDefFoundError: com.company.project.demo.bdd.runner.Execute.main (Execute.java:20) cucumber / api / cli / Main ) Sebep: java.lang.ClassNotFoundException: java.net.URLClassLoader.findClass (Unknown Source), java.lang.ClassLoader.loadClass (Unknown Source) at sun.misc.Launcher $ AppClassLoader. java.lang.ClassLoader.loadClass (Unknown Source) şirketinde
loadClass

24

İstediğiniz:

java -cp myJar.jar myClass

Belgeler Aşağıdaki örnek verir:

C:> java -classpath C:\java\MyClasses\myclasses.jar utility.myapp.Cool

18

Java'da iki tür JAR dosyası vardır:

  1. Manifest dosyasını içeren çalıştırılabilir / yürütülebilir jar dosyası. Çalıştırılabilir bir kavanoz çalıştırmak için java -jar fileName.jarveyajava -jar -classpath abc.jar fileName.jar

  2. Manifest dosyası içermeyen basit jar dosyası, böylece ana sınıfınızı yolunu vererek çalıştırın java -cp ./fileName.jar MainClass


6

myJar.jarDosyanın olduğu ve myClassüzerinde bir public static void main()yöntem olduğu dizinde olduğunuzu varsayarsak :

Aşağıdaki komut satırını kullanın:

java -cp ./myJar.jar myClass

Nerede:

  1. myJar.jarolduğu akım yolu , not .çoğu sistemlerde geçerli yolda değil. Burada da tamamen nitelikli bir yol tercih edilir.

  2. myClassBir olduğu tam paket yolu sınıfına, örnek varsayar myClassolduğunu varsayılan paketin o olurdu iç içe bir pakette ise kötü bir uygulama olduğunu com.mycompany.mycode.myClass.


1

Bu yürütmek için doğru yolu .jarve ne olursa olsun bir o sınıf .jarolmalı main()ve aşağıdaki kendisine parametreler şunlardır:

java -DLB="uk" -DType="CLIENT_IND" -jar com.fbi.rrm.rrm-batchy-1.5.jar
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.