Аннотация @FXML и класс FXMLLoader не разрешены для типа в Java 11 и JavaFX 11
Ранее мой проект был на Java 8, но теперь я использую Java 11 вместе с JavaFX 11, и теперь JavaFX отделен от Java начиная с Java 11. Я не загружал JavaFX SDK, но добавил ниже зависимость в pom.xml для получения необходимые модули и файлы JAR, которые использовались как часть самой Java в более ранних версиях.
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>11</version>
</dependency>
Но я получаю ошибку компиляции can not be resolved to a type
на @FXML
аннотация и FXMLLoader
учебный класс.
Нужно ли мне добавлять другие / дополнительные зависимости для решения этой проблемы?
1 ответ
FXML (@FXML
аннотации, FXMLLoader...) были перенесены в модуль javafx.fxml
с выпуском Java 9.
До JavaFX 11 всякий раз, когда вы вызывали что-то связанное с JavaFX, у вас были все модули javafx, доступные в SDK.
Но теперь вы должны включить те, которые вам нужны:
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>11</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-fxml</artifactId>
<version>11</version>
</dependency>
Обратите внимание, что javafx.controls
зависит от javafx.graphics
а также java.base
так что вам не нужно включать их. А также javafx.fxml
напрямую зависит от javafx.base
,