Аннотация @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,

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