Как включить автоматический импорт в Eclipse для классов JavaFX?

Мой текущий Eclipse - Oxygen.2 Release (4.7.2), и есть Java 9.0.1. По сути, Java 9 работает, в частности, работает автоматический импорт (для "обычных" классов и пакетов), но автоматический импорт (и автозаполнение) не работает для javafx.*, Если я вручную наберу import java и нажмите Ctrl+Пробел, затем появится список соответствующих пакетов, где я могу видеть javafx.* иерархия. Но когда я набираю, например, import javafx.stage и нажмите Ctrl+Пробел, он автоматически добавляет .*; и не отображает никаких классов в пакете. Когда я печатаю Stage где-нибудь в теле метода и нажмите Ctrl+пробел, нет никаких предложений для этого. Однако, когда я печатаю добавить импорт (как import javafx.stage.Stage) затем код компилируется и запускается.

Любые подсказки, как исправить автозаполнение и функцию автоматического импорта (которая, как я уже говорил, работает для других классов, как, например, java.time.LocalDateTime или много других).

1 ответ

Решение

javafx* классы блокируются во время завершения кода из-за правил доступа, регулирующих доступ к системным пакетам. Например, в Eclipse bug 527353 механизм динамического вычисления списка доступных пакетов не был завершен в Eclipse Oxygen. В результате можно использовать только статический профиль. Этот файл в настоящее время упоминает:

ПРИМЕЧАНИЕ. Профиль JavaSE-9 еще не завершен.

Поскольку динамическое вычисление в соответствии с JEP 261 включает в себя javafx пакеты - если таковые имеются - я думаю, что статический профиль должен также перечислять их или отказаться от них, чтобы полностью полагаться только на правила JPMS.

Однако вы можете избежать этой проблемы, явно определив правило доступа, предоставляющее доступ к javafx/** в

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

Другие вопросы по тегам