2010-04-12 31 views
36

Ho creato un file eseguibile .jar. Come posso eseguire .jar utilizzando un file batch senza menzionare un percorso di classe?Esegui .jar dal file batch

+5

Amico, la formattazione, una domanda non è un segmento di codice. –

risposta

3

Se doppio clic sul file .jar in Windows Explorer funziona, allora si dovrebbe essere in grado di utilizzare questo:

start myapp.jar 

nel file batch.

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

+0

Dà l'errore windows non riesce a trovare myapp.jar (il mio file jar). – Arivu2020

+0

@ Arivu2020: sei nella directory giusta?Forse il tuo file batch deve fare cd cd: \ path \ to \ my \ stuff' prima di provare a eseguire il file jar? – RichieHindle

0

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

2

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

java -jar YourJar.jar 

Per fare questo come un file batch, è sufficiente copiare il comando in un file di testo e salvarlo come un .bat:

@echo off 
java -jar YourJar.jar 

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

+0

'@echo ...' è solo per Windows ... –

+0

@Carlos: ho pensato che, come l'OP chiedeva un file batch, che stessero usando Windows. – mdm

+0

solo una nota ... –

12

Se si desidera un file batch per eseguire un file jar, fare un file vuoto chiamato runjava.bat con il contenuto:

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

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

43

Su Windows è possibile utilizzare il seguente comando.

start javaw -jar JarFile.jar 

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

+0

Grazie per aver condiviso! :) – MikkoP

+0

Windows non riesce a trovare 'javaw'. Ho risolto questo problema semplicemente aprendo "JarFile.jar" (con il file .jar nella stessa cartella del file batch). – NiteCyper

+0

OMG! Come lo fermi ora? – shyam

1

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

Nel manifesto:

Class-Path: Library.jar 

Questo documento fornisce ulteriori dettagli:

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

Per creare un vaso utilizzando il un file manifesto denominato MANIFEST, è possibile utilizzare il seguente comando:

jar -cmf MANIFEST MyJar.jar <class files> 

Se si specifica l'ordine di classe relativo ths (cioè, altri jar nella stessa directory), quindi puoi spostare il barattolo e il file batch menzionato nella risposta di mdm funzionerà ancora.

21

Esiste una soluzione a ciò 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 pipistrello è:

java -jar %~dp0myjarfile.jar %* 

Fondamentalmente %0 sarebbe espandersi al percorso completo bat e %~dp0 espande il percorso completo bat tranne il nome del file. Quindi %~dp0myjarfile.jar è il percorso completo del file myjarfile.jar, con il 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)

+1

Questo è ottimo, ma lascia la lettera di unità spenta. – guthrie

+3

Hai ragione. '% ~ dp0' deve essere usato al posto di'% ~ p0' per avere anche la lettera del drive. Modificherò la risposta. – BrunoMedeiros

5
cd "Your File Location without inverted commas" 

esempio: cd c: \ Users ***** \ Desktop \ directory \ destinazione

java -jar myjar.jar 

esempio di file bat si presenta così:

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

Questo funzionerà correttamente.

+0

Perché senza virgolette (virgolette)? Se il percorso ha uno spazio nel nome, sono necessarie le virgolette. – Rob

-1

si shoult provare questo:

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

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

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

@ECHO OFF 
start java -jar <your_jar_file_name>.jar 

Usa javaw per .jar che ha un'interfaccia utente

@ECHO OFF 
start javaw -jar <your_jar_file_name>.jar 

Accertarsi che il proprio JAVA_HOME sia impostato nelle variabili di ambiente.

+0

Informazioni precise e accurate. Molto obbligato! –

1

È necessario assicurarsi di specificare il classpath nel file MANIFEST.MF. Se si utilizza Maven per fare la confezione, è possibile configurare i seguenti plugin:

1. Maven-di dipendenze-plugin:
2. Maven-jar-plugin:

<plugin> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <version>${version.plugin.maven-dependency-plugin}</version> 
    <executions> 
     <execution> 
      <id>copy-dependencies</id> 
      <phase>package</phase> 
      <goals> 
       <goal>copy-dependencies</goal> 
      </goals> 
      <configuration> 
       <outputDirectory>${project.build.directory}/lib</outputDirectory> 
       <overWriteReleases>false</overWriteReleases> 
       <overWriteSnapshots>true</overWriteSnapshots> 
       <includeScope>runtime</includeScope> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 
<plugin> 
    <artifactId>maven-jar-plugin</artifactId> 
    <version>${version.plugin.maven-jar-plugin}</version> 
    <configuration> 
     <archive> 
      <manifest> 
       <addClasspath>true</addClasspath> 
       <classpathPrefix>lib/</classpathPrefix> 
       <addDefaultImplementationEntries>true</addDefaultImplementationEntries> 
       <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries> 
      </manifest> 
     </archive> 
    </configuration> 
</plugin> 

Il file manifesto risultante essere confezionata nei jar eseguibile sotto META-INF e sarà simile a questa:

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 questa:

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

Questo dovrebbe essere di configurazione completa per la costruzione di un jar eseguibile utilizzando Maven :)

0

è possibile utilizzare il seguente comando nella .bat file appena creato:

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

si prega di fornire il percorso del Java Se non ci sono più versioni di java installate nel sistema e assicurati di aver specificato il metodo principale e il file manifest viene creato durante la creazione del file jar.