首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Eclipse氧气2+ Java 9几分钟后显示错误

Eclipse氧气2+ Java 9几分钟后显示错误
EN

Stack Overflow用户
提问于 2018-03-01 09:56:55
回答 1查看 654关注 0票数 3

使用Eclipse 9开发几分钟后,我开始看到只有重新启动Eclipse才能解决的错误。在此之前,Java 9支持工作得很好。

我使用Gradle并通过Buildship导入项目

症状

通常情况下,一些Java工具交互失败,在最近的例子中是“Reference -> Workspace”。错误日志窗口中的堆栈跟踪是

代码语言:javascript
运行
复制
java.lang.NullPointerException
    at org.eclipse.jdt.internal.compiler.lookup.BinaryModuleBinding.create(BinaryModuleBinding.java:64)
    at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.getModuleFromAnswer(LookupEnvironment.java:427)
    at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForTypeFromModules(LookupEnvironment.java:367)

在此之后,编辑文件时触发的任何编译都会导致神秘的错误,例如

代码语言:javascript
运行
复制
The type java.lang.Object cannot be resolved. It is indirectly referenced from required .class files

研究/我尝试过的事情

  • 创建一个新的工作区
  • 拆除和重新实施这些项目
  • 日食虫526206看起来类似,但相对于4.7.1。我用的是4.7.2
  • 在使用Java控制台运行时发现了以下异常

跟踪

代码语言:javascript
运行
复制
Caused by: java.nio.channels.ClosedByInterruptException
        at java.base/java.nio.channels.spi.AbstractInterruptibleChannel.end(AbstractInterruptibleChannel.java:199)
        at java.base/java.nio.channels.Channels$ReadableByteChannelImpl.read(Channels.java:386)
        at jdk.internal.jrtfs.JrtFileSystem$1.read(JrtFileSystem.java:376)
        at java.base/sun.nio.ch.ChannelInputStream.read(ChannelInputStream.java:65)
        at java.base/sun.nio.ch.ChannelInputStream.read(ChannelInputStream.java:109)
        at java.base/sun.nio.ch.ChannelInputStream.read(ChannelInputStream.java:103)
        at java.base/java.nio.file.Files.read(Files.java:3160)
        at java.base/java.nio.file.Files.readAllBytes(Files.java:3213)
        at org.eclipse.jdt.internal.compiler.util.JrtFileSystem.getClassfileBytes(JRTUtil.java:330)
        at org.eclipse.jdt.internal.compiler.util.JrtFileSystem.getClassfileContent(JRTUtil.java:311)
        at org.eclipse.jdt.internal.compiler.util.JRTUtil.getClassfileContent(JRTUtil.java:153)
        at org.eclipse.jdt.internal.core.AbstractClassFile.getClassFileContent(AbstractClassFile.java:187)

eclipse.ini

我找到的各种解决方案都涉及更改eclipse.ini中的eclipse.ini行,但是4.7.2是随--add-modules=ALL-SYSTEM一起提供的,我对eclipse.ini所做的唯一调整就是添加了-vm参数,使其指向Java9JDK

代码语言:javascript
运行
复制
-vm
C:/adam/apps/jdk-9.0.4_windows-x64_bin/bin/javaw.exe

环境

  • 日食4.7.2
  • 运行在Windows 7上的Java 9.0.4 64位
  • 4.6rc2级
  • Buildship: 2.2.2.v20180209-2313-s (升级是因为4.7.2构建不支持Gradle + Java 9)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-24 06:23:04

这是由Eclipse 525842引起的。

简而言之,问题发生在发生某种交互时,涉及从9月220中引入的新的Java9运行时文件系统读取Eclipse。Eclipse使用Thread.interrupt()中断线程,这会导致没有人例外的java.nio.channels.ClosedByInterruptException。这破坏了JDT和所有后续操作。进行后台编译的批处理编译器似乎不受此问题的影响。

在写这篇文章的时候,这个bug已经固定在M7光子的构建中,并且还被支持到氧气释放3中。

然而,它似乎并没有出现在氧气3或光子M7压缩文件。它可以通过从http://download.eclipse.org/eclipse/downloads/找到最新的集成构建,然后下载JDT,例如org.eclipse.jdt-4.7.3aRC2.zip并通过添加新的软件->软件站点-> Archive来添加。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49047019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档