Maven-зависимость для JavaFX с использованием OpenJDK 1.8 - PullRequest
1 голос
/ 28 мая 2019

Среда:

  • ОС: Для разработки и запуска приложений, как Windows 10 Pro (1809), так и Linux (что-то вроде Ubuntu или Debian)) с установленными OpenJDK 1.8 и Maven.
  • JDK: OpenJDK 1.8
  • IDE: IntelliJ Ultimate
  • Инструмент сборки Maven (многомодульный проект, один модуль использует JavaFX)
  • Я бы очень предпочел не использовать что-либо с платной лицензией (хотя для этого проекта я мог бы, вероятно,используйте Oracle JDK бесплатно ...).

Проблема:

Я знаю, что JDK 1.8 должен идти с JavaFX.Однако для OpenJDK 1.8 это почему-то, похоже, не так (без зависимостей Maven IntelliJ не принимает ни import javafx.application.Application;, ни какой-либо другой импорт JFX).

По этой причине я пытаюсьвключить его как зависимость Maven.Если я использую:

    <!-- JavaFX -->
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-controls</artifactId>
        <version>11</version>
    </dependency>
    .
    .
    .

я получаю следующее сообщение об ошибке:

Error:(3, 26) java: cannot access javafx.application.Application
   bad class file: /C:/Users/kaspa/.m2/repository/org/openjfx/javafx- 
   graphics/11/javafx-graphics-11-win.jar!/javafx/application/Application.class
   class file has wrong version 54.0, should be 52.0
   Please remove or make sure it appears in the correct subdirectory of the 
   classpath.

Использование <version>12</version> дает [...]wrong version 55.0, should be 52.0[...].

Самый низкий <version>,внутри Maven <dependency>, я могу использовать, кажется, Бо 11.

Вопрос:

  • Есть ли что-то, что я могу добавить / изменитьмой pom.xml, чтобы заставить мое приложение компилироваться и запускаться?
  • Нужно ли мне обновляться до OpenJDK 11 или 12?

1 Ответ

1 голос
/ 28 мая 2019

Сначала немного фона. От Java 8 до Java 10 Oracle JDK раньше поставлялся с JavaFX. Но даже в этих версиях JavaFX не является частью OpenJDK. Начиная с Java 11, JavaFx также не является частью Oracle JDK (как в случае с OpenJDK).

Итак, Что вы делаете не так?

Вы пытаетесь запустить JavaFX 11 и 12 с JDK 8. Это невозможно.

Что вы можете сделать?

Получите openjfx 8. Вы можете либо собрать их из source , либо установить его через sudo-apt в Ubuntu.

Доступна ли JavaFX 8 как зависимость Maven?

Не то, что я знаю!

Мой совет .. Используйте Oracle JDK, если вы хотите использовать Java8 или обновить до Java 11 и использовать openJFX в качестве зависимости Maven.

...