Supongamos que queremos usar una clase que viene en un jar. Por ejemplo:
public class MiClase { public static String saludo() { return "Saludos de MiClase"; } }
Podemos construir un jar de la siguiente manera.
javac MiClase.java jar cf MiClase.jar MiClase.class
Ahora usemos este jar desde otra clase.
public class Inicio { public static void main(String[] args) { System.out.println(MiClase.saludo()); } }
Si sólo queremos ejecutar esta clase.
javac -cp MiClase.jar Inicio.java java -cp .:MiClase.jar Inicio
Qué pasa si también queremos crear un jar de esta clase.
jar cfe Inicio.jar Inicio Inicio.class
Noten que el parámetro Inicio indica el punto de entrada a nuestra aplicación. Este fue mi primer intento para ejecutar el programa.
java -cp MiClase.jar -jar Inicio.jar
El cual me generó este error:
Exception in thread "main" java.lang.NoClassDefFoundError: MiClase
Resulta que la opción jar funciona con jars que contienen todas sus dependencias, también les llaman jar ejecutables. La solución es poner los jars en el classpath e indicar el punto de entrada.
java -cp MiClase.jar:Inicio.jar Inicio
No hay comentarios:
Publicar un comentario