web-dev-qa-db-fra.com

Exécuter .jar à partir d'un fichier de commandes

J'ai créé un fichier exécutable .jar. Comment puis-je exécuter le .jar en utilisant un fichier de commandes sans mentionner un chemin de classe?

40
Arivu2020

Sous Windows, vous pouvez utiliser la commande suivante.

start javaw -jar JarFile.jar

Ce faisant, la fenêtre d'invite de commandes ne reste pas ouverte.

49
Jleuleu

Il existe une solution à cela qui ne nécessite pas de spécifier le chemin du fichier jar dans le fichier .bat. Cela signifie que le fichier jar peut être déplacé sans modification dans le système de fichiers, à condition que le fichier .bat soit toujours situé dans le même répertoire que le fichier jar. Le code .bat est:

Java -jar %~dp0myjarfile.jar %*

Fondamentalement, %0 développerait le chemin complet .bat et %~dp0 le chemin complet .bat sauf le nom de fichier. Donc, %~dp0myjarfile.jar est le chemin complet du fichier myjarfile.jar colocalisé avec le fichier .bat. %* prendra tous les arguments donnés au .bat et le passera au programme Java. (voir: http://www.Microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/percent.mspx?mfr=true )

21
BrunoMedeiros

Si vous souhaitez qu'un fichier de commandes exécute un fichier JAR, créez un fichier vierge appelé runjava.bat avec le contenu:

Java -jar "C:\myjarfile.jar"
15
Jonno_FTW

Vous pouvez créer un fichier de commandes avec l'extension .bat avec le contenu suivant

Utilisez Java pour .jar qui n'a pas d'interface utilisateur et qui est une application en ligne de commande

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

Utilisez javaw pour .jar qui a une interface utilisateur

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

Assurez-vous que votre Java_HOME est défini dans les variables d'environnement.

10
Nagarajan S R
cd "Your File Location without inverted commas"

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

Java -jar myjar.jar

exemple de fichier bat ressemble à ceci:

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

Cela fonctionnera bien.

5
BRjava

Pour exécuter un fichier .jar à partir de la ligne de commande, utilisez simplement:

Java -jar YourJar.jar

Pour ce faire en tant que fichier de commandes, copiez simplement la commande dans un fichier texte et enregistrez-la au format .bat:

@echo off
Java -jar YourJar.jar

Le @echo off garantit simplement que la deuxième commande n'est pas imprimée.

5
mdm

Si vous double-cliquez sur le fichier .jar dans l'Explorateur Windows, vous devriez pouvoir l'utiliser:

start myapp.jar

dans votre fichier batch.

La commande Windows start fait exactement la même chose en coulisse qu'un double-clic sur un fichier.

3
RichieHindle
Java -jar "C:\\myjarfile.jar"

Vous devrez peut-être ajouter "\\" à la commande. Essaye ça!

2
Venkat

D'après ce que je comprends de la question, le PO essaie d'éviter de spécifier un chemin de classe dans sa ligne de commande. Vous pouvez le faire en plaçant le chemin de classe dans le fichier Manifest. 

Dans le manifeste:

Class-Path: Library.jar

Ce document donne plus de détails:

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

Pour créer un fichier jar à l'aide du fichier manifeste MANIFEST, vous pouvez utiliser la commande suivante:

jar -cmf MANIFEST MyJar.jar <class files>

Si vous spécifiez des chemins de classe relatifs (c.-à-d. D'autres fichiers JAR dans le même répertoire), vous pouvez alors déplacer les fichiers JAR et le fichier batch mentionné dans la réponse de mdm fonctionnera toujours.

1
merlin2011

Vous devez vous assurer de spécifier le chemin d'accès aux classes dans le fichier MANIFEST.MF. Si vous utilisez Maven pour faire le packaging, vous pouvez configurer les plugins suivants:

1. maven-depedency-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>

Le fichier manifeste résultant sera emballé dans le fichier jar exécutable sous META-INF et ressemblera à ceci:

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

Le script Windows ressemblerait à ceci:

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

Cela devrait être une config complète pour construire un fichier jar exécutable avec Maven :)

1
razvanone

Etapes 1- Créer/exporter un fichier jar exécutable à partir de votre projet.

2- Créez un fichier .bat avec le contenu ci-dessous

@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- set classpath est requis si vous utilisez des fichiers JAR externes.

4- Placez le fichier .bat et le fichier jar dans le même dossier.

5- Conformément à la commande Java -cp, indiquez l'emplacement exact de votre fichier jar et le nom complet de la méthode main, suivi d'une liste d'arguments, conformément aux exigences.

0
JitenS

De la même manière que vous le feriez dans la console de commande. Copiez exactement ces commandes dans le fichier de commandes.

0
BalusC

vous pouvez utiliser la commande suivante dans le fichier .bat nouvellement créé: 

@echo off
call C:\SWDTOOLS\**PATH\TO\Java**\Java_1.7_64\jre\bin\Java -jar workspace.jar  

Indiquez le chemin de Java si plusieurs versions de Java sont installées sur le système et assurez-vous que vous avez spécifié la méthode principale et que le fichier manifeste est créé lors de la création du fichier jar.

0
bosari