In Java gibt es zwei Möglichkeiten, eine JAR-Datei auszuführen: mit der Option -jar oder Angabe des Klassenpfads mit -cp. Der Versuch, beide Optionen zu kombinieren, führt jedoch zu einem Fehler.
Bei der Verwendung von -jar geht die Java Virtual Machine (JVM) davon aus, dass die JAR-Datei alle notwendigen Abhängigkeiten enthält. Daher wird die Angabe eines zusätzlichen Klassenpfads mit -cp nicht empfohlen.
Stattdessen gibt es zwei alternative Ansätze:
<code class="xml"><manifestclasspath property="myprogram.manifest.classpath" jarfile="MyProgram.jar"> <classpath> <fileset dir="libs" includes="*.jar" /> </classpath> </manifestclasspath></code>
<code class="xml"><jar destfile="MyProgram.jar" basedir="classes"> <manifest> <attribute name="Main-Class" value="main.Main" /> <attribute name="Class-Path" value="${myprogram.manifest.classpath}" /> </manifest> </jar></code>
Durch Angabe des Klassenpfads im Manifest , java -jar MyProgram.jar enthält alle Abhängigkeiten.
java -cp 'MyProgram.jar:libs/*' main.Main
Mit der *-Syntax werden alle JAR-Dateien im Verzeichnis „libs“ erweitert.
Denken Sie daran, dass es wichtig ist, entweder den -jar- oder den -cp-Ansatz zu wählen. Die Kombination beider kann zu Klassenpfadkonflikten und Fehlern führen.
Das obige ist der detaillierte Inhalt vonWie führe ich eine JAR-Datei mit zusätzlichen Abhängigkeiten aus: -jar vs. -cp?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!