Saltar al contenido

¿Diferencias entre “java -cp” y “java -jar”?

Investigamos en distintos espacios y así de esta forma traerte la solución para tu dilema, en caso de dificultades puedes dejarnos tu pregunta y te contestamos porque estamos para servirte.

Solución:

Prefiero la primera versión para iniciar una aplicación Java solo porque tiene menos trampas (“bienvenido al infierno de classpath”). El segundo requiere un archivo jar ejecutable y el classpath para esa aplicación debe definirse dentro del manifiesto del jar (todas las demás declaraciones de classpath se ignorarán silenciosamente…). Entonces, con la segunda versión, tendría que buscar en el contenedor, leer el manifiesto e intentar averiguar si las entradas de classpath son válidas desde donde se almacena el contenedor… Eso es evitable.

No espero ninguna ventaja o desventaja de rendimiento para ninguna de las versiones. Solo le dice al jvm qué clase usar para el hilo principal y dónde puede encontrar las bibliotecas.

Con el -cp argumento proporciona el classpath, es decir, la(s) ruta(s) a clases o bibliotecas adicionales que su programa puede requerir cuando se compila o ejecuta. Con -jar usted especifica el archivo JAR ejecutable que desea ejecutar.

No puedes especificarlos a ambos. Si intentas correr java -cp folder/myexternallibrary.jar -jar myprogram.jar entonces realmente no funcionará. El classpath para ese JAR debe especificarse en su Manifiesto, no como un -cp argumento.

Puedes encontrar más sobre esto aquí y aquí.

PD: -cp y -classpath son sinónimos.

Cuando usas java -cp debe proporcionar un nombre de clase principal completamente calificado, por ejemplo

java -cp com.mycompany.MyMain

Cuando usas java -jar myjar.jar su archivo jar debe proporcionar la información sobre la clase principal a través de manifest.mf contenida en el archivo jar en la carpeta META-INF:

Main-Class: com.mycompany.MyMain

Te mostramos comentarios y valoraciones

Tienes la posibilidad comunicar este artículo si te fue de ayuda.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *