当我运行 mvn install
. 我甚至删除了本地存储库并再次运行,得到相同的异常。
[错误]无法执行goal org.apache.maven。plugins:maven-shade-plugin:2.1:project cores批处理上的shade(默认):创建shaded jar时出错:loc头无效(签名错误)->[help 1]
<?xml version="1.0" encoding="UTF-8"?>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.1</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<artifactSet>
<excludes>
<exclude>commons-logging:commons-logging:jar:*</exclude>
</excludes>
</artifactSet>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<!-- workaround for a spring issues -->
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
<!-- don't want to pick up any other log4j.xml -->
<exclude>log4j.xml</exclude>
</excludes>
</filter>
</filters>
<!-- May be needed to work around another issue in Spring -->
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.handlers</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.schemas</resource>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
错误:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-shade-plugin:2.1:shade (default) on project cores-batch: Error creating shaded jar: invalid LOC header (bad signature) -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-shade-plugin:2.1:shade (default) on project cores-batch: Error creating shaded jar: invalid LOC header (bad signature)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
Caused by: org.apache.maven.plugin.MojoExecutionException: Error creating shaded jar: invalid LOC header (bad signature)
at org.apache.maven.plugins.shade.mojo.ShadeMojo.execute(ShadeMojo.java:528)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
... 19 more
Caused by: java.util.zip.ZipException: invalid LOC header (bad signature)
at java.util.zip.ZipFile.read(Native Method)
at java.util.zip.ZipFile.access$1400(ZipFile.java:56)
at java.util.zip.ZipFile$ZipFileInputStream.read(ZipFile.java:679)
at java.util.zip.ZipFile$ZipFileInflaterInputStream.fill(ZipFile.java:415)
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:158)
at java.io.FilterInputStream.read(FilterInputStream.java:107)
at org.codehaus.plexus.util.IOUtil.copy(IOUtil.java:189)
at org.codehaus.plexus.util.IOUtil.copy(IOUtil.java:175)
at org.apache.maven.plugins.shade.DefaultShader.addResource(DefaultShader.java:427)
at org.apache.maven.plugins.shade.DefaultShader.shade(DefaultShader.java:186)
at org.apache.maven.plugins.shade.mojo.ShadeMojo.execute(ShadeMojo.java:458)
... 21 more
[ERROR]
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
14条答案
按热度按时间w8ntj3qf1#
从gsitgithub/find-currupt-jars.txt中,以下命令列出存储库中所有损坏的jar文件:
您可以删除损坏的jar文件,然后重新编译项目。
输出示例:
disho6za2#
我想练习一下。
使用您首选的ide,以eclipse为例:
在异常堆栈中找到适当的位置
设置条件断点
调试一下
它将在异常之前打印损坏的jar
eoigrqb63#
也许与这个问题的最初原因无关,但对于那些将面临gradle和本地模块依赖的人来说,这是一样的
如果模块不包含组和版本,那么在
module/build.gradle
只是需要具体说明wkftcu5l4#
我们可以使用至少两个选项在maven中强制进行校验和验证:
1.添加
--strict-checksums
我们的Maven指挥部。2.将以下配置添加到maven设置文件:
更多详情请参见本帖:https://dzone.com/articles/maven-artifact-checksums-what
uurv41yg5#
这是一个用java编写的小检测器,只需复制并运行:)
输出
kyxcudwk6#
我在将ear部署到本地weblogic示例时遇到了这个问题。清除本地存储库并构建ear再次解决了这个问题。
ohtdti5x7#
如果您使用的是centos linux系统,maven本地存储库将是:
您可以删除.m2并在dev工具中构建maven项目,这将解决此问题。
7nbnzgx98#
除了删除.m2/repository之外,还要从服务器中删除应用程序,运行服务器(没有应用程序),停止它,然后再次添加应用程序。现在它应该可以工作了。由于某些原因,仅仅从界面清理服务器文件夹并没有同样的效果。
w8rqjzmb9#
我的解决办法是逃跑
mvn
与-X
:然后回顾输出,直到看到失败,然后继续,直到看到mvn试图处理的最后一个jar文件:
查看失败前的最后一个jar并将其从本地存储库中删除,即。
v2g6jxz610#
在pom文件中,maven编译器的配置似乎有问题。java源和目标的默认版本是1.5,即使使用的jdk也有更高的版本。
要修复此问题,请使用更高版本的java添加maven编译器插件配置部分,例如:
有关更多信息,请查看以下链接:
maven编译器
错误报告
lfapxunr11#
你需要检查哪个jar有问题。一定是坏了。删除那个jar然后运行
mvn spring-boot:run
再次命令。可能不止一个jar已损坏,因此每次需要运行该命令来删除该jar时。在我的例子中,mysql,jackson,aspect jars被破坏了mvn spring-boot:run
命令三次,我发现了这一点并从中删除了jar.m2
文件夹。现在问题解决了。z4bn682m12#
jar文件可能已损坏。尝试删除以下文件夹的内容:
然后右键单击您的项目,选择maven,updateproject,选中forceupdateofsnapshots/release。
kd3sttzy13#
主要问题是jar损坏。
要查找损坏的异常,您需要在eclipse的breakpoints视图中添加一个java异常断点,或者您首选的ide,选择
java.util.zip.ZipException
类,然后重新启动tomcat示例。当jvm在
ZipException
必须转到的断点JarFile.getManifestFromReference()
在堆栈跟踪中,并检查属性name
查看文件名。之后,您应该从文件系统中删除该文件,然后右键单击您的项目,选择maven,updateproject,选中forceupdateofsnapshots/release。
e3bfsja214#
这个答案不是针对devops/系统管理员,而是针对那些使用ide(如eclipse和facebook)的人
invalid LOC header (bad signature)
问题。您可以强制更新maven依赖项,如下所示: