Creo que @Yishai tiene derecho a eso (le daré un voto favorable para poner en marcha la pelota). Me encuentro con esto todo el tiempo. En lo que creo que fue una decisión horrible para el lenguaje Java, decidieron que estaría bien permitir que la configuración de la ruta de clases vaya a los archivos MANIFEST dentro de los archivos jar. Básicamente, los Jars pueden tener archivos dentro de ellos que apuntan a otras clases y jarras ubicadas en otro lugar y cuando esas otras cosas señalan que no existen, usted ve advertencias como las que está recibiendo. Estas advertencias provienen de archivos Jar que se encuentran en su classpath de compilación. Entonces, lo que debe hacer si realmente le importa es rastrear los archivos jar problemáticos, extraer el contenido de los archivos jar, eliminar la configuración de "Class-Path" en sus archivos de manifiesto y volver a crearlos. Algo así (mueva el contenedor a un directorio temporal en alguna parte primero):
#Extract the jar file
jar xvf myfile.jar
rm myfile.jar
emacs ./META-INF/MANIFEST.MF
*Find the entry "Class-path:" and remove it completely and save the changes
#Rebuild the jar file
jar cvf myfile.jar ./*
¡Eso debería hacer el truco!
No creo que solo quiera suprimir estos mensajes porque si desea un control total sobre lo que está pasando en su ruta de clases, debe buscar estos archivos de manifiesto y asegurarse de que no entren en conflicto con la ruta de clase usted no sabe
Probablemente tendrás que mirar a través de una tonelada de archivos jar, así que generalmente termino usando un bucle de shell para ayudarme a mirar a través de ellos. Puede copiar todos los tarros en cuestión en un directorio temporal y ejecutar un bucle como este (sintaxis bash):
for i in *.jar; do echo $i; jar xf $i; grep -i 'class-path' ./META-INF/MANIFEST.MF; done
que imprimirá el nombre de cada archivo Jar en el directorio actual, extraer su contenido, y grep su archivo de manifiesto para entradas classpath. Si el nombre del archivo jar en el resultado tiene una copia impresa "Class-Path" después de él, eso significa que Jar tiene configuraciones de classpath en su manifiesto. De esta forma, con suerte podrá descubrir en qué tarros necesita actuar.
¡Gracias por la elaboración! – Yishai
Buena idea, pero usted contamina el directorio actual con el contenido de los archivos JAR. –
@LawrenceDol Es por eso que dice 'Puede copiar todos sus contenedores en cuestión en un directorio temporal ...' –