找不到IntelliJ编译错误zip END标头

时间:2018-09-19 17:58:48

标签: java intellij-idea

问题

我无法在Java 9和10上的IntelliJ build 182.4505.22上为导入的Eclipse项目编译Java代码。在编译模块或任何单个文件时显示以下错误:

Error:(1, 1) java: cannot access edu.wit.cs.comp2000

zip END header not found

详细信息

项目的结构如下: IntelliJ project structure

完整的编译时输出如下: enter image description here

已经尝试

我已经审查了帖子herehere,它们没有提供任何相关详细信息。 我尝试在Java 9和10上进行编译,这没有什么区别。 我已将一个主要方法写入LinkedBag,并尝试独立于JUnit运行该方法,这将导致相同的错误。 IntelliJ无法在我的测试类中正确显示测试图标,因此我怀疑JUnit(或缺少JUnit)是问题的原因,但是我不确定如何继续。编译其他项目的工作(没有JUnit测试)就可以了。

更新

  • 该代码似乎可以按预期在Java 1.8上进行编译和测试,而不会出现问题。每次切换到Java 9或10都会导致上述问题。我开始怀疑教师的一个依存关系特别需要Java 1.8,但是如果有人有解决方案,我仍然想使用Java的较新版本。

9 个答案:

答案 0 :(得分:2)

就我而言,它是:/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/9.0.41/tomcat-embed-core-9.0.41.jar 我刚刚删除了它,我能够编译我的代码。 只要注意 .jar 文件,它就会出错。只需将其删除即可。

答案 1 :(得分:1)

当Idea在下载项目依赖项时互联网连接断开时,我们遇到了这个问题。我们通过从缓存中删除损坏的文件来解决它。缓存位置取决于您的构建工具,例如G。对于Maven,它位于~/.mvn中;对于Gradle,它位于~/.gradle中。

答案 2 :(得分:1)

我的Mac遇到了类似的问题。我刚刚删除了.m2存储库,并且再次进行了maven clean install工作。

答案 3 :(得分:1)

在我的情况下,该项目的gradle版本为6.2.2,并且在Intellij gradle设置中提供了6.4.1(系统默认gradle)路径。 这个问题突然出现了。我在这个项目上工作了很长时间,没有任何问题。我不太确定是什么触发了此问题。 gradle默认版本软件包很好,因为从命令行可以构建gradle。 :)

引自here的建议

以下任何一项解决了我系统上的问题:

  • 在gradle设置中提供项目gradle版本的路径。 或
  • 在gradle-wrapper.properties中将'distributionUrl'值更改为具有'all'而不是'bin'。并确保在intellij gradle设置中配置了gradle-wrapper.properties。

distributionUrl=https\://services.gradle.org/distributions/gradle-6.2.2-all.zip

enter image description here

答案 4 :(得分:0)

在Spring Boot应用程序中使用thymeleaf-extras-springsecurity4中的依赖项org.thymeleaf.extras时,我遇到了类似的问题。

将依赖关系更新到最新版本很有帮助。

答案 5 :(得分:0)

如上所述,只需删除损坏的缓存并重新启动Intellij。

在命令行中运行gradle可以帮助您了解应删除的内容。例如:

$ ./gradlew --version
Could not unzip /home/cesarc/.gradle/wrapper/dists/gradle-5.6.2-all/9st6wgf78h16so49nn74lgtbb/gradle-5.6.2-all.zip to /home/cesarc/.gradle/wrapper/dists/gradle-5.6.2-all/9st6wgf78h16so49nn74lgtbb.
Reason: error in opening zip file

并删除文件夹/home/cesarc/.gradle/wrapper/dists/gradle-5.6.2-all/9st6wgf78h16so49nn74lgtbb文件夹后,问题已解决:

$ ./gradlew --version
Downloading https://services.gradle.org/distributions/gradle-5.6.2-all.zip
......

答案 6 :(得分:0)

当您使用要求类型为pom的依赖项(以传递方式添加所有对BOM表有用的依赖项)但未指定它时,也会发生这种情况。

例如,如果您有一个Spring Boot项目并使用该启动程序:

<dependency>
    <groupId>org.zkoss.zkspringboot</groupId>
    <artifactId>zkspringboot-starter</artifactId>
    <version>${zkspringboot.version}</version>
</dependency>

然后mvn clean package会给您以下错误:

错误:java:无法访问com.example.myproject

运行该应用程序将导致以下错误:

java:错误读取... \。m2 \ repository \ org \ zkoss \ zkspringboot \ zkspringboot-starter \ 2.3.0 \ zkspringboot-starter-2.3.0.jar; 找不到zip END标头

因为它不应该进行任何包装。

添加pom打包类型可以解决此问题,从而可以使工件仅作为依赖项版本的描述符:

<dependency>
    <groupId>org.zkoss.zkspringboot</groupId>
    <artifactId>zkspringboot-starter</artifactId>
    <version>${zkspringboot.version}</version>
    <type>pom</type>
</dependency>

答案 7 :(得分:0)

调整文件观看设置对我有用。

对于Ubuntu / Mac,请运行以下两个命令。

sudo echo "fs.inotify.max_user_watches = 524288" | sudo tee /etc/sysctl.d/40-idea.conf

sudo sysctl -p --system

答案 8 :(得分:0)

我遇到了这个错误

[ERROR] error reading /Users/username/.m2/repository/io/confluent/common-config/5.5.1/common-config-5.5.1.jar; zip END header not found

我不知道为什么 jar 损坏了,但是当我用我同事的 jar 文件替换 jar 时错误消失了。暂时修复错误。