升级到JDK 10,并在Eclipse中遇到广泛的编译错误

时间:2018-10-07 06:28:57

标签: java eclipse swing java-10 java-11

更新:我最终发现下面描述的问题只是最初的呈现问题。实际的问题是,从Java 8更新到Java 10(和11)之后,Eclipse无法正确编译我的项目。 JDK库和其他设置已正确配置,我遇到了近1,000个编译错误。

没有理由进一步阅读

我将Swing应用程序从JDK 8升级到JDK 10(在Mac上为Oracle Java),并且eclipse抱怨缺少javax.accessibility.Accessible,这是我的一个课程所必需的。我理解该错误的含义,但是我无法弄清楚为什么eclipse无法找到该软件包。我已经在网上搜索了一个多小时,但我无法暗示有人遇到此问题。看来我应该只能够从JDK中访问该程序包,但显然我丢失了一些东西。

EDIT2:

当出现错误时,我关闭了标志以中止构建,现在我看到有数百个错误。很难说哪些是主要的,但常见的是class java.awt.<SomeClass> is not accessible。似乎对于每个awt类都会发生这种情况。我的代码未按模块进行组织,我发现java.desktop上的Modulepath隐式可用。此外,此代码的ant构建也可以正常工作。

编辑:

如评论中所建议,这可能是IDE配置错误,但是我不知道该如何解决。我已经离开Java几年了,尽管我已经足够了解JDK与JDK 9一起进行了重组,并且引入了模块,但是我不知道我是否应该做些什么明确地进行操作,以使javax.accessibility包在类路径中可用。我只是将JRE系统库添加到了项目中的构建路径中,就像在Eclipse中对Java项目所做的一样。

在构建路径配置UI中,我看到JRE系统库(绑定到JDK 10)是Modulepath下的唯一条目。在JRE系统库下,我看到了许多模块,在它们上方的是条目Is Module,我可以对其进行编辑。它在左侧显示了可用的模块,在右侧的两个树表中显式和隐式包含了模块。这些都不包括javax.accessibility,但是jdk.accessibility被列为明确包含。左侧的可用模块似乎均与可访问性没有任何关系。因此,我对于可以进一步包括该丢失的程序包一无所知。某些swing类都依赖于它,因此似乎默认情况下应该就在那里。

1 个答案:

答案 0 :(得分:1)

事实证明,除了特定的(较旧的)发行版之外,Eclipse不支持Java 10+。我一直在使用最新版本(4.9.0),并且使用Java 10和Java 11 JDK提出了广泛的编译问题(近1,000个错误)。 (我的问题中描述的javax.accessibility问题只是第一个演示系统。)

我安装了Eclipse Oxygen.3a(4.7.3a),使用JDK 10和11的所有编译问题都消失了。起初有一个问题,很容易解决。将现有的Java项目导入工作区后,出现的编译错误比以前更多。这是因为.project文件中的JRE系统库设置显然不兼容。 JRE在Classpath下显示为未绑定的库。我刚刚删除了它,并在Modulepath下添加了JRE系统库,并且所有内容编译都没有错误。

几个月前,我看到一篇帖子说Eclipse Photon支持Java 10,但是我没有尝试过。