Desarrollo un proyecto usando .jar para volver a usar el código.
Así que tengo .jar llamado TOOLS.jar, y desarrollo una aplicación simple en el archivo HelloWorld.java que refiere a mi paquete TOOLS de TOOLS.jar
Compilo con esta línea de comando:
javac -g -d C:\MyApp -cp TOOLS.jar HelloWorld.java
Es exitoso, y cuando quiero ejecutar mi aplicación, uso este comando (estoy en la carpeta C: \ MyApp):
java -cp \TOOLS.jar;. HelloWorld
Es exitoso, pero mi pregunta es:
¿Cómo ejecuto mi aplicación cuando tengo múltiples .jar externo?
¿Debo agregar cada comando con la opción -cp?
¿Hay alguna manera de generar solo un archivo binario y ejecutarlo (como .exe con progtwigs C)?
Concatenar cada argumento del archivo jar a cp con:
; on Windows : on Linux or Mac
p.ej
java -cp \TOOLS.jar;.; \jar2.jar; \jar3.jar HelloWorld
en las JVM más nuevas (6+, creo) también puede usar * para agregar todos los JAR en un directorio, por ejemplo
java -cp .;\*; HelloWorld
Para ir un paso más allá y crear un solo ejecutable empaquetado, vea esta pregunta .
Si tiene muchos archivos jar en una carpeta y no desea agregarlos a classpath manualmente. Puedes un .bat en windows o shell en linux.
cpappend.bat de 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
Y otro archivo bat que usa la instrucción “for” para agregar todo el archivo jar a classpath
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% abcMainApp
Si tiene varios C:\Program Files\Java\jdk1.7.0_17\jre\lib\ext
externos, copie todos los C:\Program Files\Java\jdk1.7.0_17\jre\lib\ext
requeridos en C:\Program Files\Java\jdk1.7.0_17\jre\lib\ext
y ejecute el comando javac "yourfilename.java"
. Se comstackrá sin errores