2

我当前的 Eclipse 是 Oxygen.2 Release (4.7.2),还有 Java 9.0.1。本质上 Java 9 可以工作,尤其是自动导入工作(对于“普通”类和包),但自动导入(和自动完成)不适用于javafx.*. 如果我手动键入import java并按Ctrl+ Space,则会弹出匹配包的列表,我可以在其中看到javafx.*层次结构。但是当我键入 egimport javafx.stage并按Ctrl+Space时,它会自动添加.*;并且不显示包中的任何类。当我Stage在方法主体的某处键入并按Ctrl+Space时,没有任何建议。但是,当我键入添加导入(如import javafx.stage.Stage)时,代码会编译并运行。

任何关于如何修复自动完成和自动导入功能的线索(正如我所说,它适用于其他类,例如java.time.LocalDateTime或许多其他类)。

4

1 回答 1

8

javafx*由于管理对系统包的访问的访问规则,类在代码完成期间被阻止。例如,查看 Eclipse 错误 527353动态计算可访问包列表的机制尚未在 Eclipse Oxygen 中最终确定。因此,只能使用静态配置文件。该文件目前提到:

注意:JavaSE-9配置文件尚未最终确定

由于根据JEP 261的动态计算包括javafx包(如果可用),我认为静态配置文件也应该列出这些包,或者被放弃而只支持完全依赖JPMS规则。

但是,您可以通过显式定义授予对javafx/**at的访问权限的访问规则来避免该问题

Java Build Path > Libraries > JRE System Library > Access rules.

于 2018-02-25T12:23:19.830 回答