web-dev-qa-db-ja.com

OpenJDK 1.8を使用したJavaFXのMaven依存関係

環境:

  • OS:アプリケーションの開発と実行には、OpenJDK 1.8とMavenがインストールされたWindows 10 Pro(1809)とLinux(UbuntuやDebianなど)の両方が使用されます。
  • JDK: OpenJDK 1.8
  • IDE: IntelliJ Ultimate
  • ビルドツール Maven(マルチモジュールプロジェクト、1つのモジュールは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>の中で、私は使用できるようです。

質問:

  • アプリケーションをコンパイルして実行するためにpom.xmlに追加/変更できるものはありますか?
  • OpenJDK 11または12に絶対にアップグレードする必要がありますか?

まず、背景について少し説明します。 Java 8からJava 10まで。以前はOracle JDKにJavaFXが付属していました。ただし、これらのバージョンでも、JavaFXはOpenJDKの一部ではありません。 Java 11、JavaFxもOracle JDKの一部ではありません(OpenJDKの場合のように)。

だから、何が間違っているのですか?

JDK 8でJavaFX 11および12を実行しようとしています。これは不可能です。

あなたは何ができますか?

Openjfx 8を入手してください。これらは source からビルドするか、UbuntuのSudo-aptからインストールできます。

JavaFX 8はMaven依存関係として使用できますか?

私が気づいているわけではありません!

私のアドバイス..Java8を使用する場合、またはJava 11にアップグレードして、Maven依存関係としてopenJFXを使用する場合は、Oracle JDKを使用してください。

1