para matematicas disponibilidad data comandos clusvcadm cluster big alta java compiler-warnings

java - matematicas - comandos cluster linux



Advertencia de mal camino, ¿de dónde viene? (4)

Cuando compilo mi proyecto con advertencias de compilador (JDK 1.5) recibo un montón de advertencias de elementos de ruta incorrecta:

Warning :: [path] bad path element "C: / Users / User / MyJava / common / lib / junit.jar": no existe tal archivo o directorio Warning :: [path] bad path element "C: / Users / User / MyJava / common / lib / jdom.jar ": no existe tal archivo o directorio Warning :: [path] elemento de ruta incorrecta" C: / Users / User / MyJava / common / lib / xerces.jar ": no existe tal archivo o directorio Warning :: [ruta] elemento de ruta incorrecta "C: / Users / User / MyJava / common / lib / xml-apis.jar": no existe tal archivo o directorio

y muchos más.

Esto está utilizando IDEA 8.1.3. No puedo encontrar en ninguna parte de la configuración de IDEA (he visto todo el proyecto) donde cualquier cosa apunte a estos archivos. De hecho, ya no están todos bajo ese nombre, pero ¿a qué se refieren?


¿Ha comprobado los lugares en los que se está configurando su variable de entorno CLASSPATH y la opción de compilación?


Creo que @Yishai tiene el derecho de hacerlo (le daré un voto positivo para hacer rodar el balón). Me encuentro con esto todo el tiempo. En lo que creo que fue una decisión horrible para el lenguaje Java, decidieron que sería correcto permitir que las configuraciones de ruta de clase ingresen en los archivos MANIFEST dentro de los archivos jar. Básicamente, los Tarros pueden tener archivos dentro de ellos que apuntan a otras clases y tarros ubicados en otros lugares y cuando esas otras cosas que apuntan a no existir, se ven advertencias como las que está recibiendo. Estas advertencias provienen de los archivos Jar que están en su classpath de compilación. Entonces, lo que debe hacer si realmente le importa es rastrear los archivos jar de problemas, extraer el contenido de los archivos jar, eliminar la configuración de "Class-Path" en sus archivos de manifiesto y volver a crearlos. Algo como esto (mueve el jar a un directorio temporal en algún lugar 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 quieras suprimir estos mensajes porque si quieres tener un control total sobre lo que está pasando en tu classpath, deberías buscar estos archivos de manifiesto y asegurarte de que no se metan con el classpath de una manera que no lo haces. saber sobre.

Es probable que tengas que mirar un montón de archivos jar, por lo que generalmente termino usando un bucle de shell para ayudarme a revisarlos. Puedes copiar todos tus Jars en cuestión a un directorio temporal y ejecutar un bucle como este (sintaxis de bash):

for i in *.jar; do echo $i; jar xf $i; grep -i ''class-path'' ./META-INF/MANIFEST.MF; done

Esto imprimirá el nombre de cada archivo Jar en el directorio actual, extraerá su contenido y grep su archivo de manifiesto para las entradas de classpath. Si el nombre del archivo jar en la salida tiene una copia impresa de "Class-Path", significa que Jar tiene la configuración de classpath en su manifiesto. De esta manera, es de esperar que puedas averiguar en qué Tarros necesitas actuar.


Los elementos de ruta en cuestión son más probables en un archivo de manifiesto de JAR. Para localizar el JAR ofensivo, puede ejecutar este script de shell que extraerá solo los archivos de manifiesto y mostrará cualquier ruta de clase que tenga:

for i in *.jar; do echo $i; /path/to/your/jdk/bin/jar xf $i META-INF/MANIFEST.MF; grep -i ''class-path'' META-INF/MANIFEST.MF; done


Según this , el problema es que en los frascos de terceros hay una referencia a estos en el manifiesto. El mensaje se puede desactivar agregando -Xlint: -path a los parámetros de compilación.