Как включить автоматический импорт в 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
,