构建期间的弹簧错误

时间:2012-10-24 07:30:41

标签: spring maven spring-mvc

我必须使用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,当我检查目录时,这些罐子就在那里。

如何解决此错误?

9 个答案:

答案 0 :(得分:52)

错误消息的相关部分是:

invalid LOC header (bad signature)

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

rm -rf ~/.m2/repository/*

另见

答案 1 :(得分: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再次下载依赖项。

答案 2 :(得分:3)

让我多次运行以下脚本。它寻找CEN和LOC标题行 mvn结果中的问题,并要求逐个删除罐子。经过一些删除和重新运行后,事情应该再次起作用。我不敢完全自动化。

#!/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

答案 3 :(得分:3)

它抛出因为.jar无效或已损坏。

按照步骤:

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

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

第2步:重启Eclipse。

第3步:Maven->更新项目.Checked-强制更新快照/版本。

第4步:以Maven Clean的方式运行。

第5步:以Maven安装方式运行。

第6步:清理项目。

第7步:运行您的项目。

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

谢谢..

答案 4 :(得分:2)

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

答案 5 :(得分:1)

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

即谷歌搜索您的To​​mcat版本的源代码并调整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文件的位置,然后删除并重建等。)

答案 6 :(得分: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);
                    }
                }
            }
        }
    }
}

答案 7 :(得分:0)

Help -> Install New Softwares

从那里安装包含Web开发,XML,CSS,Java EE ... 之后,如果此问题仍然存在,请使用命令

rm -rf ~/.m2/repository/*

答案 8 :(得分:0)

试试这个:

find ~/.m2  -name "*.lastUpdated" -exec grep -q "Could not transfer" {} \; -print -exec rm {} \;