web-dev-qa-db-fra.com

Dépendance Maven pour JavaFX utilisant OpenJDK 1.8

Environnement:

  • OS: Pour développer et exécuter l'application, Windows 10 Pro (1809) et Linux (quelque chose comme Ubuntu ou Debian) avec OpenJDK 1.8 et Maven installés seront utilisés.
  • JDK: OpenJDK 1.8
  • IDE: IntelliJ Ultimate
  • Outil de construction Maven (projet multi-module, un module utilise JavaFX)
  • Je préférerais de loin ne rien utiliser avec une licence payante (même si, pour ce projet, je pourrais probablement utiliser Oracle JDK gratuitement ...).

Le problème:

Je sais que le JDK 1.8 est censé venir avec JavaFX inclus. Cependant, pour OpenJDK 1.8, cela ne semble pas être le cas (sans les dépendances Maven, IntelliJ n'accepte pas import javafx.application.Application; ni aucune autre importation JFX).

Pour cette raison, j'essaie de l'inclure en tant que dépendance Maven. Si j'utilise:

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

Je reçois le message d'erreur suivant:

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.

En utilisant <version>12</version> donne [...]wrong version 55.0, should be 52.0[...].

Le plus bas <version>, à l'intérieur du Maven <dependency>, Je suis capable d'utiliser semble bo 11.

La question:

  • Y a-t-il quelque chose que je peux ajouter/modifier à mon pom.xml pour compiler et exécuter mon application?
  • Dois-je absolument passer à OpenJDK 11 ou 12?

D'abord, un peu de contextualisation. De Java 8 à Java 10, le JDK Oracle était fourni avec JavaFX. Mais, même dans ces versions, JavaFX ne fait pas partie de OpenJDK. De Java 11, JavaFx ne fait pas non plus partie du JDK Oracle (comme ce fut le cas avec OpenJDK).

Alors, Que faites-vous de mal?

Vous essayez d'exécuter JavaFX 11 et 12 avec JDK 8. Ce n'est pas possible.

Que pouvez-vous faire?

Obtenez le openjfx 8. Vous pouvez soit les construire à partir de source ou l'installer via Sudo-apt sur Ubuntu.

JavaFX 8 est-il disponible en tant que dépendance Maven?

Pas que je sache!

Mon conseil .. Utilisez Oracle JDK si vous souhaitez utiliser Java8 ou passer à Java 11 et utiliser openJFX comme dépendance Maven.

1