Esegui .jar dal file batch

Ho creato un file .jar eseguibile. Come posso eseguire .jar usando un file batch senza menzionare un percorso di class?

Su Windows è ansible utilizzare il seguente comando.

 start javaw -jar JarFile.jar 

In questo modo, la finestra del prompt dei comandi non rimane aperta.

C’è una soluzione a questo che non richiede di specificare il percorso del file jar all’interno di .bat. Ciò significa che il jar può essere spostato nel filesystem senza modifiche, purché il file .bat si trovi sempre nella stessa directory del jar. Il codice .bat è:

 java -jar %~dp0myjarfile.jar %* 

Fondamentalmente %0 si espanderebbe nel percorso completo .bat e %~dp0 espanderà nel percorso completo .bat eccetto il nome file. Quindi %~dp0myjarfile.jar è il percorso completo di myjarfile.jar posto nel file .bat. %* prenderà tutti gli argomenti dati a .bat e lo passerà al programma Java. (vedi: http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/percent.mspx?mfr=true )

Se si desidera che un file batch esegua un file jar, creare un file vuoto denominato runjava.bat con il contenuto:

 java -jar "C:\myjarfile.jar" 

È ansible creare un file batch con estensione .bat con i seguenti contenuti

Usa java per .jar che non ha l’interfaccia utente ed è un’applicazione a riga di comando

 @ECHO OFF start java -jar .jar 

Usa javaw per .jar che ha un’interfaccia utente

 @ECHO OFF start javaw -jar .jar 

Assicurati che il tuo JAVA_HOME sia impostato nelle variabili di ambiente.

 cd "Your File Location without inverted commas" 

esempio: cd C: \ Users ***** \ Desktop \ directory \ target

 java -jar myjar.jar 

esempio bat file assomiglia a questo:

 @echo OFF cd C:\Users\****\Desktop\directory\target java -jar myjar.jar 

Questo funzionerà bene.

Per eseguire un file .jar dalla riga di comando, basta usare:

 java -jar YourJar.jar 

Per fare ciò come un file batch, basta copiare il comando in un file di testo e salvarlo come .bat :

 @echo off java -jar YourJar.jar 

@echo off assicura solo che il secondo comando non venga stampato.

Se si fa doppio clic sul file .jar in Esplora risorse, dovrebbe essere ansible utilizzare questo:

 start myapp.jar 

nel tuo file batch.

Il comando di start Windows fa esattamente la stessa cosa dietro le quinte come doppio clic su un file.

 java -jar "C:\\myjarfile.jar" 

Potrebbe essere necessario aggiungere "\\" al comando. Prova questo!

La mia comprensione della domanda è che l’OP sta cercando di evitare di specificare un percorso di class nella sua linea di comando. Puoi farlo inserendo il percorso di class nel file Manifest.

Nel manifest:

 Class-Path: Library.jar 

Questo documento fornisce maggiori dettagli:

http://docs.oracle.com/javase/tutorial/deployment/jar/downman.html

Per creare un jar utilizzando il file manifest denominato MANIFEST, puoi utilizzare il seguente comando:

 jar -cmf MANIFEST MyJar.jar  

Se si specificano percorsi di class relativi (ad es. Altri jar nella stessa directory), è ansible spostare il jar e il file batch menzionato nella risposta di mdm funzionerà comunque.

È necessario assicurarsi di specificare il classpath nel file MANIFEST.MF. Se stai usando Maven per fare la confezione, puoi configurare i seguenti plugin:

1. plugin-depedency-plugin:
2. plugin per maven-jar:

  maven-dependency-plugin ${version.plugin.maven-dependency-plugin}   copy-dependencies package  copy-dependencies   ${project.build.directory}/lib false true runtime      maven-jar-plugin ${version.plugin.maven-jar-plugin}    true lib/ true true     

Il file manifest risultante verrà inserito nel jar eseguibile sotto META-INF e avrà il seguente aspetto:

 Manifest-Version: 1.0 Implementation-Title: myexecjar Implementation-Version: 1.0.0-SNAPSHOT Built-By: razvanone Class-Path: lib/first.jar lib/second.jar Build-Jdk: your-buildjdk-version Created-By: Maven Integration for Eclipse Main-Class: ro.razvanone.MyMainClass 

Lo script di Windows sarebbe simile a questo:

 @echo on echo "Starting up the myexecjar application..." java -jar myexecjar-1.0.0-SNAPSHOT.jar 

Questa dovrebbe essere una configurazione completa per build un jar eseguibile usando Maven 🙂

Proprio come faresti nella console di comando. Copia esattamente quei comandi nel file batch.

puoi usare il seguente comando nel file .bat appena creato:

 @echo off call C:\SWDTOOLS\**PATH\TO\JAVA**\java_1.7_64\jre\bin\java -jar workspace.jar 

Fornire il percorso di java se sono presenti più versioni di java installate nel sistema e assicurarsi di aver specificato il metodo principale e di creare il file manifest durante la creazione del file jar.

Passaggi 1- Crea / esporta un file jar eseguibile dal tuo progetto.

2- Creare un file .bat con il contenuto sottostante

 @Echo off set classpath="c:\jars\lib\*****.jar;c:\jars\lib\*****.jar;c:\extJars\****.jar" java -cp %classpath%;c:\apps\applName\yourJar.jar com.****.****.MainMethod args1 args2 ... @pause 

3- impostare il percorso di class è necessario se si utilizzano giare esterne.

4- Inserisci il file .bat e il file jar nella stessa cartella.

5- Come per il comando java -cp, fornire la posizione esatta del file jar e il nome completo del metodo principale seguito dall’elenco degli argomenti come da requisiti.

prova a provare questo:

 java -cp youJarName.jar your.package.your.MainClass