Ich entwickle ein Projekt mit .jar, um Code wiederzuverwenden.
Also habe ich auf .jar den Namen TOOLS.jar und entwickle eine einfache Anwendung in der Datei HelloWorld.Java, die auf mein Paket TOOLS aus TOOLS.jar verweist
Ich kompiliere mit dieser Kommandozeile:
javac -g -d C:\MyApp -cp TOOLS.jar HelloWorld.Java
Es ist erfolgreich, und wenn ich meine Anwendung ausführen möchte, verwende ich diesen Befehl (ich befinde mich im Ordner C:\MyApp):
Java -cp <path>\TOOLS.jar;. HelloWorld
Es ist erfolgreich, aber meine Frage ist:
Wie führe ich meine Anwendung aus, wenn ich mehrere externe .jar-Dateien habe?
Muss ich jeden Befehl mit der Option -cp hinzufügen?
Gibt es eine Möglichkeit, nur eine Binärdatei zu generieren und auszuführen (als .exe mit C-Programmen)?
Verketten Sie jedes Argument der JAR-Datei mit cp:
; on Windows
: on Linux or Mac
z.B.
Java -cp <path>\TOOLS.jar;.;<path>\jar2.jar;<path>\jar3.jar HelloWorld
bei neueren JVMs (6+, glaube ich) können Sie auch das * verwenden, um alle JARs in einem Verzeichnis anzuhängen, z.
Java -cp .;<path>\*; HelloWorld
Um einen Schritt weiter zu gehen und eine einzelne ausführbare Datei zu erstellen, lesen Sie diese Frage .
Wenn Sie viele JAR-Dateien in einem Ordner haben und diese nicht manuell an den Klassenpfad anhängen möchten. Du kannst dir eine .bat unter Windows oder eine Shell unter Linux zulegen.
cpappend.bat von Tomcat
rem ---------------------------------------------------------------------------
rem Append to CLASSPATH
rem
rem $Id: cpappend.bat 301115 2002-08-04 18:19:43Z patrickl $
rem ---------------------------------------------------------------------------
rem Process the first argument
if ""%1"" == """" goto end
set CLASSPATH=%CLASSPATH%;%1
shift
rem Process the remaining arguments
:setArgs
if ""%1"" == """" goto doneSetArgs
set CLASSPATH=%CLASSPATH% %1
shift
goto setArgs
:doneSetArgs
:end
Und noch eine bat-Datei, die "for" -Anweisung verwendet, um die gesamte jar-Datei an classpath anzuhängen
set CURRENT_DIR=%cd%
set CLASSPATH=.
for %%i in (%CURRENT_DIR%\lib\*.jar) do call cpappend.bat %%i
start Java -Duser.dir=%CURRENT_DIR% -cp %CLASSPATH% a.b.c.MainApp