maven2 中的编译错误:“无效的 CEN 标头(错误签名)”

Posted

技术标签:

【中文标题】maven2 中的编译错误:“无效的 CEN 标头(错误签名)”【英文标题】:Compile error in maven2: "invalid CEN header (bad signature)" 【发布时间】:2011-07-24 02:54:09 【问题描述】:

我正在迁移我们的 java-ee 项目以使用 Maven 而不是 Ant。

对于下面的依赖

    <dependency>
      <groupId>javolution</groupId>
      <artifactId>javolution</artifactId>
      <version>5.4.2</version>
    </dependency>

尝试编译时出现以下错误

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.
3.2:compile (default-compile) on project JAdaptiv: Compilation failure
[ERROR] error: error reading C:\Users\User.IVSTEL1\.m2\repository\javolution\
javolution\5.4.2\javolution-5.4.2.jar; invalid CEN header (bad signature)
[ERROR] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal o
rg.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on
 project JAdaptiv: Compilation failure
error: error reading C:\Users\User.IVSTEL1\.m2\repository\javolution\javoluti
on\5.4.2\javolution-5.4.2.jar; invalid CEN header (bad signature)

        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
.java:213)
        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.buildProje
ct(LifecycleModuleBuilder.java:84)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProje
ct(LifecycleModuleBuilder.java:59)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBu
ild(LifecycleStarter.java:183)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(Lifecycl
eStarter.java:161)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:319)
        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:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Laun
cher.java:290)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.jav
a:230)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(La
uncher.java:409)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:
352)
Caused by: org.apache.maven.plugin.CompilationFailureException: Compilation fail
ure
error: error reading C:\Users\Croydon.IVSTEL1\.m2\repository\javolution\javoluti
on\5.4.2\javolution-5.4.2.jar; invalid CEN header (bad signature)

        at org.apache.maven.plugin.AbstractCompilerMojo.execute(AbstractCompiler
Mojo.java:656)
        at org.apache.maven.plugin.CompilerMojo.execute(CompilerMojo.java:128)
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(Default
BuildPluginManager.java:101)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
.java:209)
        ... 19 more
[ERROR]
[ERROR]
[ERROR] For more information about the errors and possible solutions, please rea
d the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureExc
eption

【问题讨论】:

查看这个答案***.com/questions/32090921/… 【参考方案1】:

这意味着本地存储库中的 javolution-5.4.2 jar 已损坏。我在这个link 上检查了 maven repo 的 5.4.2 版本。您可以手动将 jar 从那里复制到本地存储库,看看是否有帮助。

您也可以尝试以下步骤:-

    从本地存储库C:\Users\User.IVSTEL1\.m2\repository\javolution\ javolution\5.4.2\javolution-5.4.2.jar 中删除 jar。然后maven会再次为你下载。

    如果5.4.2版本重新下载后仍有问题,请尝试以下version。

    <dependency> <groupId>javolution</groupId> <artifactId>javolution</artifactId> <version>5.5.1</version> </dependency>

【讨论】:

这也行。与此同时,我最终设置了一个maven repository manager,它设法获取了正确的文件。 是的,如果能够像 repo manager 这样托管 nexus 或 artifactory,那么这是理想的解决方案。 我只需从我的本地 .m2/repository 文件夹中删除有问题的文件,然后重新运行 Maven 构建以再次下载它们就足够了。可能是网络故障下载文件,或者(更有可能)原始发布者不小心上传了损坏的文件,然后很快纠正了他们的错误。谢谢!【参考方案2】:

我为解决此问题所遵循的步骤:

第 1 步:从 .m2->repository 文件夹中删除 jar

第 2 步:从 Java Build Path->Libraries 中删除 maven 依赖项

第 3 步:右键单击项目->Maven->更新项目

【讨论】:

以上是关于maven2 中的编译错误:“无效的 CEN 标头(错误签名)”的主要内容,如果未能解决你的问题,请参考以下文章

maven-antrun-plugin 1.6 想用Java 1.4.2 版本编译类

failed to transfer from https://repo.maven.apache.org/maven2错误解决

Gradle 构建错误:无法从 https://repo1.maven.org/maven2/io/fabric/tools/gradle/maven-metadata.xml 加载 Maven 元数

使用 maven2 构建和使用 jhears

Maven错误:警告Classpath entry org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER will not be exported or publish

Maven2的配置文件settings.xml