De mis lecturas, cuando se ejecuta un comando de la siguiente manera:incluyen frasco externa cuando se ejecuta java-jar
java -jar foo.jar
A continuación, se ignora la ruta de clase 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. Por lo tanto, 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 de acceso 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?
"Nota: El encabezado Class-Path apunta a clases o archivos JAR en la red local, ** no archivos JAR dentro del archivo JAR o clases accesibles a través de protocolos de Internet **. Para cargar clases en archivos JAR dentro de un archivo JAR en la ruta de clase, debe escribir código personalizado para cargar esas clases. Por ejemplo, si MyJar.jar contiene otro archivo JAR llamado MyUtils.jar, no puede usar el encabezado Class-Path en el manifiesto de MyJar.jar para cargar clases en MyUtils. jar en el camino de la clase ". Fuente: https://docs.oracle.com/javase/tutorial/deployment/jar/downman.html –