21

我必须使用spring. 所以我选择spring template project然后new spring mvc project无论我尝试什么都会发生错误

Errors occurred during the build.
Errors running builder 'Maven Project Builder' on project 'mTime'.Errors occurred during the build.
Errors running builder 'Maven Project Builder' on project 'mTime'.
Could not calculate build plan: Failed to parse plugin descriptor for org.apache.maven.plugins:maven-war-plugin:2.1.1 (C:\Users\User01\.m2\repository\org\apache\maven\plugins\maven-war-plugin\2.1.1\maven-war-plugin-2.1.1.jar): invalid LOC header (bad signature)
Failed to parse plugin descriptor for org.apache.maven.plugins:maven-war-plugin:2.1.1 (C:\Users\User01\.m2\repository\org\apache\maven\plugins\maven-war-plugin\2.1.1\maven-war-plugin-2.1.1.jar): invalid LOC header (bad signature)
Could not calculate build plan: Failed to parse plugin descriptor for org.apache.maven.plugins:maven-war-plugin:2.1.1 (C:\Users\User01\.m2\repository\org\apache\maven\plugins\maven-war-plugin\2.1.1\maven-war-plugin-2.1.1.jar): invalid LOC header (bad signature)
Failed to parse plugin descriptor for org.apache.maven.plugins:maven-war-plugin:2.1.1 (C:\Users\User01\.m2\repository\org\apache\maven\plugins\maven-war-plugin\2.1.1\maven-war-plugin-2.1.1.jar): invalid LOC header (bad signature)

我知道它maven包含在 中spring framework,当我检查目录时,罐子就在那里。

我该如何解决这个错误?

4

9 回答 9

52

错误消息的相关部分是:

invalid LOC header (bad signature)

这表明一些二进制文件被破坏,很可能是依赖项之一。如果您的 Internet 连接速度很快,只需删除整个 maven 存储库并让 maven 重新下载所有依赖项:

rm -rf ~/.m2/repository/*

也可以看看

于 2012-10-24T07:34:42.253 回答
26

根据我的经验,invalid LOC header (bad signature)很可能是由于下载的 .jar 文件已损坏。

如果您的互联网连接速度较慢,您可以尝试根据错误消息的提示(即C:\Users\User01\.m2\repository\org\apache\maven\plugins\maven-war-plugin\2.1.1\)删除包含有问题的 jar 的文件夹,而不是删除整个 Maven 存储库。然后使用mvn clean install -U再次下载依赖项。

于 2012-10-24T07:44:13.463 回答
3

对我来说多次运行以下脚本有效。它在 mvn 结果中查找 CEN 和 LOC 标题行问题,并要求一一删除 jar。经过几次删除和重新运行后,事情应该会再次起作用。我不敢完全自动化。

#!/bin/sh
# fix issues like:
#[ERROR] error: error reading /Users/wf/.m2/repository/org/docx4j/xhtmlrenderer/1.0.0/xhtmlrenderer-1.0.0.jar; invalid LOC header (bad signature)
# WF 2013-10-27
mvnlog=/tmp/mvnlog$$
mvnproblem=/tmp/mvnproblem$$
mvn install | tee $mvnlog
grep "invalid ... header" $mvnlog > $mvnproblem
for culprit in `cat $mvnproblem | cut -d" " -f5  | cut -d ";" -f1`
do
  echo "fix mvn LOC header issue with $culprit? yes/no/abort"
    read answer
    case $answer in
      y*|Y*) rm $culprit;;
        n*|N*) ;;
        *) exit 1;
    esac
done
rm -f $mvnproblem
rm -f $mvnlog
于 2013-10-28T15:55:42.920 回答
3

它抛出是因为您的 .jar 无效或损坏。

按照步骤:

注意:.m2 文件夹默认隐藏。取消隐藏文件夹。

步骤 1:删除 .m2/repository 文件夹中的所有内容。

第 2 步:重新启动 Eclipse。

第 3 步:Maven->Update Project .Checked-强制更新快照/发布。

第 4 步:以 Maven Clean 身份运行。

第 5 步:作为 Maven 安装运行。

第 6 步:清理项目。

第 7 步:运行您的项目。

我希望你在这里找到你的解决方案..

谢谢..

于 2016-08-24T05:58:08.617 回答
2

运行 maven 时添加调试输出。它会告诉你哪个罐子坏了。只删除那个。

于 2013-06-20T12:51:48.247 回答
1

当在 Windows 上启动 Tomcat 时遇到此错误或无法运行 Wolfgang 的脚本时,找到罪魁祸首的另一个解决方案是将 catalina.jar 中的 JarResourceSet.class 替换为具有额外调试功能的版本。

即 google 为您的 Tomcat 版本的源代码并调整 initInternal() 方法:

    String processingJar = "";

    try (JarFile jarFile = new JarFile(getBase())) {
        processingJar = jarFile.getName();

        ...
    } catch (IOException ioe) {
        System.out.println("Failed with " + processingJar);
        throw new IllegalArgumentException(ioe);
    }

要构建,您的类路径应该指向您的 Tomcat lib 目录,例如:

javac -cp C:\apache-tomcat-X.Y.Z\lib\* JarResourceSet.java

然后使用 7zip 或类似程序将其插入到相应目录下的 catalina.jar 中并运行 Tomcat。我很惊讶它第一次奏效,但确实奏效了。(然后你只需要在你的 .m2 存储库中找到有问题的 jar 文件在哪里,然后删除和重建等)

于 2016-10-27T15:23:46.367 回答
1

如果您不想完全删除本地 Maven 存储库,请使用以下命令查找损坏的工件并将其删除:

public static void main(String[] args) throws IOException {
    findBrokenZip(Paths.get(System.getProperty("user.home") + "/.m2/repository"));
}

static void findBrokenZip(Path path) throws IOException {
    try (DirectoryStream<Path> stream = Files.newDirectoryStream(path)) {
        for (Path entry : stream) {
            if (Files.isDirectory(entry)) {
                findBrokenZip(entry);
            } else {
                if (entry.getFileName().toString().endsWith(".jar")) {
                    try (JarFile zipFile = new JarFile(entry.toFile())) {
                        zipFile.getManifest();
                    } catch (ZipException e) {
                        Files.delete(entry);
                    }
                }
            }
        }
    }
}
于 2017-04-30T22:08:11.377 回答
0
Help -> Install New Softwares

从那里安装包含 Web 开发、XML、CSS、Java EE 的捆绑包......然后如果这个构建问题仍然存在,请使用命令

rm -rf ~/.m2/repository/*
于 2015-01-27T10:48:14.717 回答
0

试试这个 :

find ~/.m2  -name "*.lastUpdated" -exec grep -q "Could not transfer" {} \; -print -exec rm {} \;
于 2015-04-27T06:43:58.007 回答