incluye jar externo cuando se ejecuta java-jar
classpath manifest.mf (2)
¿Hay alguna razón por la que está evitando invocar a la clase principal como
java -cp /usr/local/jar/foobar.jar:/some/other/path.jar com.your.main.classname
?
Este tipo de invocación le permite mezclar rutas absolutas con rutas relativas. Coloque esto en un script de shell o en un archivo por lotes para evitar tener que escribir o recordar el classpath completo para simplificar las cosas.
De mis lecturas, cuando ejecutas un comando de la siguiente manera:
java -jar foo.jar
A continuación, se ignora la ruta de clases principal y la ruta de clase se toma del archivo de manifiesto.
Además, el classpath declarado en la línea de comando también se ignora. Entonces en:
java -classpath /usr/local/jar/foobar.jar -jar foo.jar
/usr/local/jar/foobar.jar se ignora.
Por último, he leído que el archivo de manifiesto solo puede contener rutas relativas, dentro del archivo jar.
Entonces, ¿cómo se incluyen las rutas absolutas a los archivos jar externos, que están presentes en el sistema, pero no en el archivo jar que se está ejecutando?
Puede crear una carpeta, digamos lib, dentro de la carpeta donde tiene el archivo jar.
Los contenidos de Manifest.MF pueden ser:
Main-Class: com.mastergaurav.test.app.MainClass
Class-Path: lib/one.jar lib/two.jar
Contenido de la carpeta:
mainFolder/
* lib/one.jar
* lib/two.jar
* my-main.jar
Ejecutar:
java -jar my-main.jar