Java 错误 Invalid LOC Header (Bad Signature)
本篇文章介绍了 Java 的无效 LOC 标头(错误签名)错误。
Java 中无效的 LOC 标头(错误签名)
每当本地 Maven 存储库中的 jar 文件损坏时,就会出现无效 LOC 标头(错误签名)错误。 本地存储库是从我们的文件系统中的 Maven 项目下载的文件。
Maven 下载的每个项目都附带其 MD5 和 SHA1 文件。
这些MD5和SHA1文件的目的是保证原始文件的原创性和完整性。 由于错误可能发生在网络和文件系统中,因此这些校验和文件也可能损坏,使其与原始文件不匹配。
通常,这种情况下会出现无效 LOC 标头(错误签名)错误。 下面给出了针对此错误的场景和解决方案。
删除本地存储库
从名称中可以清楚地看出,我们需要删除整个本地存储库并创建一个新的 Maven 项目。 这将删除所有 Maven 存储库文件,再次下载项目文件,并删除缓存。
以下命令可以删除存储库。
rm -rf ${LOCAL_REPOSITORY}
我们可以在settings.xml文件中指定本地存储库。 本地存储库的默认路径是${user.home}/.m2/repository。
删除损坏的 jar 文件
如果我们发现损坏的jar文件,我们可以删除它,问题就解决了。 Maven 输出堆栈命令可以在处理失败时向我们显示损坏的 jar。
我们可以通过在构建命令中添加 -X 来启用日志记录。
mvn -X package
上述命令将在日志文件中指示损坏的 jar 文件。 我们可以在 Maven 存储库中找到该 jar 文件并将其删除。
Maven 将在构建时重新下载该文件。 可以使用 zip -T 命令测试存档的完整性。
find ${LOCAL_REPOSITORY} -name "*.jar" | xargs -L 1 zip -T | grep error
验证 MD5 和 SHA1 校验和
以上两种解决方案都可以使Maven重新下载jar文件。 在这些情况下,将来的下载中可能会出现相同的无效 LOC 标头。
配置 Maven 以在从远程存储库下载项目时验证 MD5 和 SHA1 校验和将防止无效 LOC 标头错误。
Maven 命令中添加了 –strict-checksums
或 -C 选项,当校验和与校验和文件的值不匹配时,这将导致 Maven 构建失败。
这可以通过两种方式完成,使构建失败或对其发出警告; 警告选项是默认选项。 使用以下命令来失败或发出警告。
-C,--strict-checksums
-c,--lax-checksums
由于Maven在将工件上传到存储库时需要签名文件,因此存储库中可能存在没有签名文件的工件; 这就是为什么警告选项是默认选项的原因
相关文章
Java 错误 Java.Net.SocketException: Network Is Unreachable
发布时间:2023/07/16 浏览次数:963 分类:Java
-
今天我们就来讨论一下Java编程时出现java.net.SocketException: Network is unreachable异常的可能原因及解决方法。Java中出现java.net.SocketException: Network is unreachable的可能原因及解决方案
Java 错误 Java.Net.ConnectException: Connection Timed Out
发布时间:2023/07/16 浏览次数:235 分类:Java
-
本篇文章将重点介绍如何使用此包进行基本的网络调用以及可能面临和解决的错误。在 Java 中使用 java.net 进行网络调用 进行网络调用是 Java 开发人员每天面临的最重要的事情之一。
Java 中错误 Attempt to Invoke Virtual Method on a Null Object Reference
发布时间:2023/07/16 浏览次数:948 分类:Java
-
本篇文章介绍如何解决 Java 中的 Attempt to invoke virtual method on a null object reference 错误。Java 中 Attempt to invoke virtual method on a null object reference 错误
Java 错误 Java.Security.InvalidKeyException: Illegal Key Size
发布时间:2023/07/15 浏览次数:644 分类:Java
-
本篇文章介绍包含 java.security.InvalidKeyException: Illegal key size 的 Java 代码。 然后,我们将了解其可能的原因。最后,它通过消除指定的错误来引导我们找到解决方案。
Java 错误 Java.SQL.SQLException: Access Denied for User Root@Localhost
发布时间:2023/07/15 浏览次数:165 分类:Java
-
本篇文章介绍如何解决 Java 中的 java.sql.SQLException: Access Denied for user 'root'@'localhost' 错误。修复 Java 中的 java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
Java 错误 Gateway Process Exited Before Sending Its Port Number
发布时间:2023/07/15 浏览次数:885 分类:Java
-
本篇文章介绍了 Java 中 Java gateway process exited before sending the driver its port number 错误 Java gateway process exited before sending the driver its port number 错误
修复 Java 中 Java.Net.BindException: Address Already in Use: Bind 错误
发布时间:2023/07/15 浏览次数:250 分类:Java
-
本篇文章介绍了 Java 中的 java.net.BindException:Address already in use: Bind 错误。修复Java 中的 java.net.BindException:Address already in use: Bind
Java 中错误 Unsupported Major Minor Version
发布时间:2023/07/14 浏览次数:133 分类:Java
-
出现 Unsupported Major.minor version 错误或 Java.lang.UnsupportedClassVersionError 的原因是运行时 JDK 较低,编译时 JDK 较高。 本篇文章介绍如何解决Java中不支持的major.minor版本。
Java 错误 Error:Java: Javactask: Source Release 1.8 Requires Target Release 1.8
发布时间:2023/07/14 浏览次数:274 分类:Java
-
在使用IntelliJ for Java时,无法编译Java程序是一个常见的问题。 本教程提供了此错误的解决方案。Error:Java: Javactask: Source Release 1.8 Requires Target Release 1.8 错误