如何在 Eclipse 中为 JavaFX 类 启用自动导入?

How to enable auto import in Eclipse for JavaFX classes?

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

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

javafx* 类 由于 访问规则 管理对系统包的访问,因此在代码完成期间被阻止。看着,例如,可以使用Eclipse bug 527353 the mechanism for dynamically computing the list of accessible packages had not been finalized in Eclipse Oxygen. As a result, only a static profile。该文件目前提到:

NOTE: The JavaSE-9 profile is not yet finalized.

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

但是,您可以通过显式定义访问规则来避免此问题,该规则授予对

处的 javafx/** 的访问权限

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