Línea de comandos de Java con .jar externo

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