Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 升级到JDK10后,在Eclipse中遇到了大量编译错误_Java_Eclipse_Swing_Java 10_Java 11 - Fatal编程技术网

Java 升级到JDK10后,在Eclipse中遇到了大量编译错误

Java 升级到JDK10后,在Eclipse中遇到了大量编译错误,java,eclipse,swing,java-10,java-11,Java,Eclipse,Swing,Java 10,Java 11,更新:我最终发现下面描述的问题只是最初出现的问题。实际的问题是,在从Java8更新到Java10(和Java11)之后,Eclipse无法正确编译我的项目。JDK库和其他设置配置正确,我收到了近1000个编译错误 没有理由进一步阅读 我将一个swing应用程序从JDK 8升级到JDK 10(Mac上的Oracle Java),eclipse抱怨javax.accessibility.accessibility缺失,并且是我的一个类所必需的。我理解这个错误的含义,但我不明白为什么eclipse找不

更新:我最终发现下面描述的问题只是最初出现的问题。实际的问题是,在从Java8更新到Java10(和Java11)之后,Eclipse无法正确编译我的项目。JDK库和其他设置配置正确,我收到了近1000个编译错误

没有理由进一步阅读

我将一个swing应用程序从JDK 8升级到JDK 10(Mac上的Oracle Java),eclipse抱怨
javax.accessibility.accessibility
缺失,并且是我的一个类所必需的。我理解这个错误的含义,但我不明白为什么eclipse找不到那个包。我在网上搜索了一个多小时,没有发现任何人有这个问题。看起来我应该可以从JDK内部访问这个包,但是我显然遗漏了一些东西

编辑2:

我关闭了标志以在构建出错时中止构建,现在我看到有数百个错误。很难说哪些是主要的,但常见的情况是
类java.awt。无法访问
。这似乎发生在每个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类依赖于它,因此它似乎应该默认存在。

事实证明,Eclipse不支持Java 10+,除非在特定的(较旧的)版本中。我一直在使用最新版本(4.9.0),使用Java10和Java11JDK会出现大量编译问题(近1000个错误)。(我的问题中描述的
javax.accessibility
问题只是第一个演示系统。)

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


几个月前我看到一篇帖子,说Eclipse光子支持Java 10正在开发中,但我没有尝试过。

也许你需要的东西已经被删除了?javax.accessibility包尚未删除。这听起来像是IDE中的设置问题。或者,您可能已将代码迁移到模块,但缺少
requires java.desktop
?我同意这可能是IDE问题。缺少的包是JMenu(可能还有其他Swing类)所必需的,因此它应该不需要任何特别的措施就可以使用。缺少的是整个包,而不仅仅是一两个类。请参阅我对OP的编辑。我是Java模块的新手。我没有做任何明确的事情来将代码迁移到模块结构。我应该做些什么来显式地包含这个模块吗?Eclipse已经支持Java10几个月了,现在恢复到旧的alpha版本是没有意义的。Eclipse4.8.0和4.9.0都支持Java10开箱即用,从来没有任何问题。Eclipse4.9.0通过这个附加补丁支持Java11:谢谢。我很高兴知道4.9.0有一个补丁支持JDK 11。我会尝试这个补丁,但我确信4.9.0不适合我使用JDK10或11。我花了两天的大部分时间试图让这两种方法都能奏效。当我换成氧气时,它立即起作用。我的4.9.0工作区在JDK 10和11中仍然失败,但它可以在JDK 8和9中工作(后者是EOL,但我还是测试了它)。我希望我能得到4.9.0来使用JDK10。我没有使用JDK11,因为它缺少ant任务(antjavafx.jar)。我可以从JDK10复制它,但可能它不受支持。我尝试的Eclipse4.9.0是通过Eclipse安装程序获得的。我还试着直接下载这个版本。两个版本的行为如上所述。这就是Java开发者的Eclipse包。