Esegui la classe nel file Jar


176

Se hai un file jar chiamato myJar.jarsituato in / myfolder e vuoi usare la classe chiamata myClassda esso, come fai a farlo dalla riga di comando?

Ho pensato che sarebbe andare nella directory e dire java -cp myJar.jar.myClassche non funziona. Qualsiasi aiuto sarebbe apprezzato.


java -cp myJar.jar myClassfunziona bene per me - hai un periodo spurio nella tua riga di comando invece di uno spazio?
Chris Dodd,

1
Cosa intendi quando dici che vuoi "usare" quella classe? C'è un metodo principale che vuoi chiamare in particolare?
Marsellus Wallace,

Risposte:


256

Usa java -cp myjar.jar com.mypackage.myClass.

  1. Se la classe non è in un pacchetto, allora semplicemente java -cp myjar.jar myClass.

  2. Se non ti trovi nella directory in cui myJar.jarsi trova, puoi fare:

    1. Su piattaforme Unix o Linux:

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

    2. Su Windows:

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


10
Basta aggiungerlo ad esso - nel caso in cui com.mypackage.myClass (nell'esempio sopra) abbia dipendenze su altri vasi, eseguirlo come segue: java -cp dependfile1.jar; dependfile2.jar; c: \ location_of_jar \ myjar.jar com. mypackage.myClass
akjain il

2
Un possibile percorso di errore a cui prestare attenzione nel caso in cui non funzioni: assicurati che il tuo percorso completo per la tua classe corrisponda esattamente a ciò che è nel tuo file jar. Se decomprimi -l /location-of-jar/myjar.jar e vedi qualcosa di diverso da com / mypackage / myClass, questo è il tuo problema. (Ad esempio, se vedi bin / com / mypackage / myClass, dovresti averlo inserito nel cestino per creare il tuo file jar; quello che hai non funzionerà.)
Scott C Wilson,

usa MyClass, non myClass
Breno Inojosa il

Provando quanto sopra ottengo l'errore Eccezione nel thread "main" java.lang.NoClassDefFoundError: cucumber / api / cli / Main su com.company.project.demo.bdd.runner.Execute.main (Execute.java:20 ) Causato da: java.lang.ClassNotFoundException: cucumber.api.cli.Main su java.net.URLClassLoader.findClass (fonte sconosciuta) su java.lang.ClassLoader.loadClass (fonte sconosciuta) su sun.misc.Launcher $ AppClassLoader. loadClass (Unknown Source) su java.lang.ClassLoader.loadClass (Unknown Source) ... 1 altro
Vaibhav_Sharma

24

Tu vuoi:

java -cp myJar.jar myClass

La documentazione fornisce il seguente esempio:

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

18

Esistono due tipi di file JAR disponibili in Java:

  1. File jar eseguibile / eseguibile che contiene il file manifest. Per eseguire un vaso Runnable puoi usare java -jar fileName.jarojava -jar -classpath abc.jar fileName.jar

  2. Semplice file jar che non contiene un file manifest, quindi è sufficiente eseguire la classe principale specificandone il percorso java -cp ./fileName.jar MainClass


6

Supponendo che ci si trovi nella directory in cui si myJar.jartrova il file e che myClassha un public static void main()metodo su di esso:

Si utilizza la seguente riga di comando:

java -cp ./myJar.jar myClass

Dove:

  1. myJar.jarsi trova nel percorso corrente , si noti che .non si trova nel percorso corrente sulla maggior parte dei sistemi. Anche qui è preferibile un percorso completo .

  2. myClassè un percorso del pacchetto completo per la classe, l'esempio presuppone che myClasssi trovi nel pacchetto predefinito che è una cattiva pratica, se si trova in un pacchetto nidificato lo sarebbe com.mycompany.mycode.myClass.


1

Questo è il modo giusto di eseguire un .jar, e qualunque sia la classe che .jardovrebbe avere main()e i seguenti sono i parametri:

java -DLB="uk" -DType="CLIENT_IND" -jar com.fbi.rrm.rrm-batchy-1.5.jar
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.