incluye jar externo cuando se ejecuta java -jar

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?

¿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.

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