Error de encabezado LOC no válido(firma incorrecta) en Java
- Encabezado LOC no válido (firma incorrecta) en Java
- Eliminar el repositorio local
-
Eliminar el archivo
jar
dañado - Valide las sumas de verificación MD5 y SHA1
Este tutorial demuestra el error de encabezado LOC no válido (firma incorrecta)
de Java.
Encabezado LOC no válido (firma incorrecta) en Java
El error encabezado LOC no válido (firma incorrecta)
ocurre cada vez que un archivo jar
en nuestro repositorio Maven local está dañado. El repositorio local es el archivo descargado de un proyecto Maven en nuestro sistema de archivos.
Cada elemento que descargó Maven viene con sus archivos MD5 y SHA1.
El propósito de estos archivos MD5 y SHA1 es garantizar la originalidad e integridad de los archivos originales. Dado que el error puede ocurrir en redes y sistemas de archivos, estos archivos de suma de comprobación también pueden corromperse, haciendo que no coincidan con el original.
Por lo general, el error encabezado LOC no válido (firma incorrecta)
ocurre en esta situación. Hay escenarios y soluciones para este error que se detallan a continuación.
Eliminar el repositorio local
Como queda claro por el nombre, debemos eliminar todo el repositorio local y crear un nuevo proyecto Maven. Esto eliminará todos los archivos del repositorio de Maven, descargará los archivos del proyecto nuevamente y eliminará el caché.
El siguiente comando puede eliminar el repositorio.
rm -rf ${LOCAL_REPOSITORY}
Podemos especificar el repositorio local en el archivo settings.xml
. La ruta predeterminada para el repositorio local es ${user.home}/.m2/repository
.
Eliminar el archivo jar
dañado
Si encontramos el archivo jar
dañado, podemos eliminarlo y el problema se solucionará. El comando de la pila de salida de Maven puede mostrarnos el jar
dañado cuando no se procesa.
Podemos habilitar el registro poniendo una -X
en el comando de compilación.
mvn -X package
El comando anterior indicará el archivo jar
dañado en un archivo de registro. Podemos encontrar ese archivo jar
en el repositorio de Maven y eliminarlo.
El Maven volverá a descargar el archivo al compilar. La integridad del archivo se puede probar usando el comando zip -T
.
find ${LOCAL_REPOSITORY} -name "*.jar" | xargs -L 1 zip -T | grep error
Valide las sumas de verificación MD5 y SHA1
Las dos soluciones anteriores pueden hacer que Maven vuelva a descargar los archivos jar
. En estos casos, el mismo encabezado LOC no válido
puede ocurrir en la descarga futura.
La configuración de Maven para validar las sumas de verificación MD5 y SHA1 mientras se descarga el elemento del repositorio remoto evitará el error de “encabezado LOC no válido”.
Las opciones –strict-checksums
o -C
se agregan al comando Maven, lo que hará que Maven falle en la compilación cuando las sumas de verificación no coincidan con el valor de los archivos de suma de verificación.
Esto se puede hacer de dos maneras, para fallar la compilación o para advertirla; la opción de advertencia es la predeterminada. Use el siguiente comando para fallar o advertir.
-C,--strict-checksums
-c,--lax-checksums
Debido a que Maven requiere los archivos de firma al cargar los artefactos en el repositorio, es posible que haya artefactos en el repositorio que no tengan los archivos de firma; es por eso que la opción de advertencia es la predeterminada.
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn FacebookArtículo relacionado - Java Error
- Arreglar Java fue iniciado por el código de salida devuelto = 1
- Arreglar JAVA_HOME no se puede determinar a partir del error de registro en R
- Arreglar java.io.IOException: No queda espacio en el dispositivo en Java
- Arreglar Java.IO.NotSerializableException en Java
- Arreglar Java.Lang.IllegalStateException de Android: no se pudo ejecutar el método de la actividad
- Arreglar Java.Lang.NoClassDefFoundError: No se pudo inicializar el error de clase