Ich habe eine ausführbare .jar
-Datei erstellt. Wie kann ich den .jar
mit einer Batch-Datei ausführen, ohne einen Klassenpfad anzugeben?
Unter Windows können Sie den folgenden Befehl verwenden.
start javaw -jar JarFile.jar
Dadurch bleibt das Eingabeaufforderungsfenster nicht geöffnet.
Hierfür gibt es eine Lösung, bei der der Pfad der JAR-Datei in der .bat nicht angegeben werden muss. Dies bedeutet, dass die JAR-Datei ohne Änderungen im Dateisystem verschoben werden kann, solange sich die .bat-Datei immer im selben Verzeichnis wie die JAR-Datei befindet. Der .bat-Code lautet:
Java -jar %~dp0myjarfile.jar %*
Grundsätzlich würde %0
auf den vollständigen Pfad .bat und %~dp0
auf den vollständigen Pfad .bat mit Ausnahme des Dateinamens erweitert. %~dp0myjarfile.jar
ist also der vollständige Pfad der Datei myjarfile.jar, die sich in der .bat-Datei befindet. %*
nimmt alle Argumente an die .bat-Datei und leitet sie an das Java-Programm weiter. (Siehe: http://www.Microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/percent.mspx?mfr=true )
Wenn Sie möchten, dass eine Batchdatei eine JAR-Datei ausführt, erstellen Sie eine leere Datei namens runjava.bat mit dem Inhalt:
Java -jar "C:\myjarfile.jar"
Sie können eine Batchdatei mit der Erweiterung .bat
mit folgendem Inhalt erstellen
Verwenden Sie Java
für .jar
, der keine Benutzeroberfläche hat und eine Befehlszeilenanwendung ist
@ECHO OFF
start Java -jar <your_jar_file_name>.jar
Verwenden Sie javaw
für .jar
, der eine Benutzeroberfläche hat
@ECHO OFF
start javaw -jar <your_jar_file_name>.jar
Stellen Sie sicher, dass Ihr Java_HOME
in den Umgebungsvariablen festgelegt ist.
cd "Your File Location without inverted commas"
Beispiel: cd C:\Benutzer *****\Desktop\Verzeichnis\Ziel
Java -jar myjar.jar
Beispiel für eine bat-Datei:
@echo OFF
cd C:\Users\****\Desktop\directory\target
Java -jar myjar.jar
Das wird gut funktionieren.
Um eine .jar
-Datei von der Kommandozeile aus auszuführen, verwenden Sie einfach:
Java -jar YourJar.jar
Kopieren Sie dazu als Batchdatei den Befehl einfach in eine Textdatei und speichern Sie ihn als .bat
:
@echo off
Java -jar YourJar.jar
Der @echo off
sorgt lediglich dafür, dass der zweite Befehl nicht gedruckt wird.
Wenn das Doppelklicken auf die JAR-Datei in Windows Explorer funktioniert, sollten Sie Folgendes verwenden können:
start myapp.jar
in Ihrer Batchdatei.
Der Windows-Befehl start
macht im Hintergrund genau dasselbe wie ein Doppelklick auf eine Datei.
Java -jar "C:\\myjarfile.jar"
Möglicherweise müssen Sie dem Befehl "\\"
hinzufügen. Versuche dies!
Ich verstehe die Frage so, dass das OP versucht zu vermeiden, einen Klassenpfad in seiner Befehlszeile anzugeben. Sie können dies tun, indem Sie den Klassenpfad in die Manifest-Datei einfügen.
Im Manifest:
Class-Path: Library.jar
Dieses Dokument enthält weitere Einzelheiten:
http://docs.Oracle.com/javase/tutorial/deployment/jar/downman.html
Um eine JAR-Datei mit der Manifestdatei MANIFEST zu erstellen, können Sie den folgenden Befehl verwenden:
jar -cmf MANIFEST MyJar.jar <class files>
Wenn Sie relative Klassenpfade angeben (z. B. andere JAR-Dateien im selben Verzeichnis), können Sie die JAR-Dateien verschieben, und die in der mdm-Antwort erwähnte Batchdatei funktioniert weiterhin.
Sie müssen sicherstellen, dass Sie den Klassenpfad in der Datei MANIFEST.MF angeben. Wenn Sie Maven für das Packen verwenden, können Sie die folgenden Plugins konfigurieren:
1. Maven-Depedenz-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>
Die resultierende Manifestdatei wird in die ausführbare jar unter META-INF gepackt und sieht folgendermaßen aus:
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
Das Windows-Skript würde folgendermaßen aussehen:
@echo on
echo "Starting up the myexecjar application..."
Java -jar myexecjar-1.0.0-SNAPSHOT.jar
Dies sollte die vollständige Konfiguration sein, um eine ausführbare Dose mit Maven zu erstellen :)
Schritte 1- Erstellen/Exportieren einer ausführbaren JAR-Datei aus Ihrem Projekt.
2- Erstellen Sie eine .bat-Datei mit dem folgenden Inhalt
@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 ist erforderlich, wenn Sie externe Jars verwenden.
4- Legen Sie die .bat-Datei und die JAR-Datei in demselben Ordner ab.
5- Geben Sie gemäß dem Java -cp-Befehl Ihren genauen Speicherort für die JAR-Datei und den vollständig qualifizierten Namen der Hauptmethode an, gefolgt von einer Argumentliste, je nach Anforderung.
im .bat-Dateiformat
------- set Java classpath and give jar location -------- set classpath =% CLASSPATH%; ../ lib/MoveFiles.jar;
--------- Erwähnen Sie Ihren vollständig klassifizierten Namen der auszuführenden Java= Klasse, der in jar angegeben wurde ------ Java com.mits.MoveFiles pausieren
Genauso wie in der Befehlskonsole. Kopieren Sie genau diese Befehle in die Batchdatei.
sie können den folgenden Befehl in der neu erstellten .bat-Datei verwenden:
@echo off
call C:\SWDTOOLS\**PATH\TO\Java**\Java_1.7_64\jre\bin\Java -jar workspace.jar
Bitte geben Sie den Pfad zu Java an, wenn im System mehrere Java-Versionen installiert sind, und stellen Sie sicher, dass Sie die Hauptmethode und die Manifest-Datei beim Erstellen der JAR-Datei erstellt haben.