JavaFX, Jar über Maven kreieren

Tintenfisch

Bekanntes Mitglied
Hallo allerseits,
ich versuche derzeit eine ausführbare Jar eines Fx Projektes mit Maven zu erstellen. Allerdings scheitert dies an dem scheinbar weit verbreitetem "Problem" mit den Laufzeitkomponenten. Ich hatte gelesen, dass dies über die module-info behoben werden kann, jedoch zeigt dies bei mir keinerlei Erfolg. Wenn ich den Befehl "mvn javafx:run" ausführe, funktioniert dies soweit. Auch die jars werden fehlerfrei erzeugt, sowohl eine mit- und eine ohne Abhängigkeiten. Beim Versuch die jar allerdings auszuführen wird die Fehlermeldung "JavaFX runtime components are missing, and are required to run this application" gezeigt.
Anbei mal der Code aus der pom.fml und der module-info.java Datei. Über Tipps wäre ich sehr dankbar.

Java:
module fxmaven {
       requires javafx.fxml;
       requires javafx.controls;
       requires javafx.graphics;
        exports application;
}

XML:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com</groupId>
  <artifactId>fxmaven</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>fxmaven</name>
  <description>des</description>
 
   <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>   
    <maven.compiler.source>15</maven.compiler.source>
    <maven.compiler.target>15</maven.compiler.target>
  </properties>
 
  <!-- DEPENDENCIES -->
  <dependencies>
    <dependency>
      <groupId>org.openjfx</groupId>
      <artifactId>javafx-controls</artifactId>
      <version>15</version>
    </dependency>
    <dependency>
      <groupId>org.openjfx</groupId>
      <artifactId>javafx-fxml</artifactId>
      <version>15</version>
    </dependency>
  </dependencies>

  <build>
    <sourceDirectory>src</sourceDirectory>
    <resources>
      <resource>
        <directory>src</directory>
        <excludes>
          <exclude>**/*.java</exclude>
        </excludes>
      </resource>
    </resources>
    
    <plugins>
    <!-- COMPILE -->
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
          <release>15</release>
        </configuration>
      </plugin>
      
       <plugin>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-maven-plugin</artifactId>
        <version>0.0.5</version>
        <configuration>
          <release>11</release>
          <jlinkImageName>hellofx</jlinkImageName>
          <launcher>fxmaven</launcher>
          <mainClass>fxmaven/application.Main</mainClass>
        </configuration>
      </plugin>
      
          <!-- ASSEMBLY JAR -->
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>3.1.0</version>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>application.Main</mainClass>
                        </manifest>
                    </archive>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>   
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
    </plugins>
  </build>
</project>
 

KonradN

Top Contributor
Also erste Aussage: JavaFX ist teilweise etwas - sagen wir mal - seltsam.

So ist JavaFX bezüglich Classloader teilweise anspruchsvoll - ohne da näher drauf eingehen zu wollen.

a) Bei dem benutzten Plugin ist die Idee, dass man kein JAR erzeugt zum starten. Statt dessen solltest Du ein Image erstellen lassen mit mvn javafx:jlink
Dann bekommst Du ein Image, das Du ausführen kannst (Dafür hast Du in der pom ja auch den launcher und so angegeben!)

b) Workaround - aber das ist so nicht vorgesehen: Mach eine neue Klasse mit einer main Methode. Also etwas wie:

Java:
public class Start {
    public static void main(String[] args) {
        application.Main.main(args);
    }
}

(Deine Main erbt vermutlich von Application und ruft dann launch auf. Und genau das macht etwas Probleme: Die Startklasse erbt schon von einer JavaFX Klasse. Das ist dann nicht mehr der Fall und das könnte das Problem beheben.)

Aber noch einmal: Das ist so nicht vorgesehen und das würde ich so NICHT machen. Nutze den jlink Weg. Und wenn Du kein Script zum starten haben willst, dann nutz noch jpackage (ab Java 14) um ein AppImage zu erstellen, dass dann eine exe bereit stellt (unter Windows).
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Image kreieren mit Maven bei JavaFX und nicht modularen Jars Tools - Maven, Gradle, Ant & mehr 12
M javafx wird in einem alten programm nicht bei maven gefunden Tools - Maven, Gradle, Ant & mehr 15
L Maven IntelliJ, Maven und JavaFX + SceneBuilder Tools - Maven, Gradle, Ant & mehr 23
D Cannot invoke "javafx.scene.control.MenuButton.getScene()" nach konvertierung zu maven Tools - Maven, Gradle, Ant & mehr 3
P JavaFX jar mit Maven Tools - Maven, Gradle, Ant & mehr 9
B JavaFX 14 Projekt als EXE (ich verzweifle) Tools - Maven, Gradle, Ant & mehr 14
K Maven IntelliJ + Maven + JavaFX Tools - Maven, Gradle, Ant & mehr 2
L JavaFX Jar erzeugen Tools - Maven, Gradle, Ant & mehr 4
P JavaFX als Bundles ausliefern Tools - Maven, Gradle, Ant & mehr 4
VfL_Freak Desktopverknüpfung über den Java-Cache erstellen Tools - Maven, Gradle, Ant & mehr 0
C Subversion Übersicht über zu deployende Revisionen behalten Tools - Maven, Gradle, Ant & mehr 3
C Tomcat nicht über 8080 erreichbar Tools - Maven, Gradle, Ant & mehr 3
eskimo328 Maven Firmen Repository Dependencies nicht über Internet Tools - Maven, Gradle, Ant & mehr 7
S Webstart JNLP Update Element - kein Info-Fenster über Updates? Tools - Maven, Gradle, Ant & mehr 7
B Junit-Programm von Kommandozeile über Ant starten Tools - Maven, Gradle, Ant & mehr 20
G Maven Mit Maven Assemblieren und über Profiles eine properties-Datei manipulieren Tools - Maven, Gradle, Ant & mehr 2
K Webstart .class Datei über Reflection laden Tools - Maven, Gradle, Ant & mehr 3
S Signierte Applets über html-Link aufrufen Tools - Maven, Gradle, Ant & mehr 6
M Ant: Setzen von Umgebungsvariablen über exec-task Tools - Maven, Gradle, Ant & mehr 3
G Zugriff auf Artifactory über Ant Tools - Maven, Gradle, Ant & mehr 3
A Fehler bei Junit Tests über Ant Tools - Maven, Gradle, Ant & mehr 2
M Chat-Applet über EJB Message Bean Tools - Maven, Gradle, Ant & mehr 3
K Applet funktioniert auf Homepage bzw. über UNC-Pfad nicht Tools - Maven, Gradle, Ant & mehr 3
I Anwendung über Webstart + Libraries Tools - Maven, Gradle, Ant & mehr 8
A Ganz einfach-Applet über Browser anzeigen Tools - Maven, Gradle, Ant & mehr 3
F Bild über Applet aussuchen und auf Serverladen Tools - Maven, Gradle, Ant & mehr 14
M eine Frage über JApplet und JMenuBar Tools - Maven, Gradle, Ant & mehr 6
B Applet über Internet Explorer nicht aufrufbar Tools - Maven, Gradle, Ant & mehr 5
J Tomcat über Internet starten + Webserver Tools - Maven, Gradle, Ant & mehr 2
M clients über Java-applets auf Com-Port von server Tools - Maven, Gradle, Ant & mehr 5
F An Systeminfos rankommen über ein Applet Tools - Maven, Gradle, Ant & mehr 7
L Dateizugriff von Client auf Server über Applet Tools - Maven, Gradle, Ant & mehr 7
H Zugreifen auf Datei über ein Applet Tools - Maven, Gradle, Ant & mehr 13
T JSON Dependencies in Maven Tools - Maven, Gradle, Ant & mehr 7
E Libraries Maven Projekt hinzufügen Tools - Maven, Gradle, Ant & mehr 9
Oneixee5 Maven Phase Tools - Maven, Gradle, Ant & mehr 3
Robertop maven copy-resources nicht in WAR Datei Tools - Maven, Gradle, Ant & mehr 2
T Maven: Probleme beim Einbinden der Dependencies Tools - Maven, Gradle, Ant & mehr 9
M Mit Maven eine jar Datei bauen ohne irgendeine main Methode Tools - Maven, Gradle, Ant & mehr 1
M Mit Maven eine jar Datei Bauen ohne irgendeine main Methode Tools - Maven, Gradle, Ant & mehr 18
H Maven Maven: <mainClass>NAME?</mainClass> Tools - Maven, Gradle, Ant & mehr 13
H Maven maven-source-plugin is missing Tools - Maven, Gradle, Ant & mehr 5
M Missing Artifact on selbst gehostestes Maven Paket Tools - Maven, Gradle, Ant & mehr 8
M Error code 409 maven Tools - Maven, Gradle, Ant & mehr 5
M github + maven Fehler beim repository erstellen Tools - Maven, Gradle, Ant & mehr 1
M durch Maven wird "var" nicht gefunden Tools - Maven, Gradle, Ant & mehr 4
N Maven Intellij Maven Projekt erstell keine src Tools - Maven, Gradle, Ant & mehr 4
L Maven Einzelne Unit Tests in Maven Builds skippen Tools - Maven, Gradle, Ant & mehr 3
M Maven jpackage-image wird nicht gefunden Tools - Maven, Gradle, Ant & mehr 22
von Spotz Maven und Spring: "Add to classpath" ? Tools - Maven, Gradle, Ant & mehr 29
Kirby.exe Projekt mit Maven kompilieren Tools - Maven, Gradle, Ant & mehr 13
P Maven Projekt Abhängigkeiten auf bekante Schwachstellen prüfen Tools - Maven, Gradle, Ant & mehr 4
H Maven dependency Problem ? Tools - Maven, Gradle, Ant & mehr 23
B Maven und Intellij Tools - Maven, Gradle, Ant & mehr 24
P Maven Test werden nicht ausgeführt . Junit . Maven . Surefire . Eclipse Tools - Maven, Gradle, Ant & mehr 12
yakazuqi Maven Eigene API mit Maven einbinden Tools - Maven, Gradle, Ant & mehr 1
M Was ist besser für den Anfang, Maven oder Gradle? Tools - Maven, Gradle, Ant & mehr 6
P Maven Wie die Maven Project version in JSP page verwenden? Tools - Maven, Gradle, Ant & mehr 2
C Maven Multi-Module Projekt Tools - Maven, Gradle, Ant & mehr 2
T Maven Warnings/Fehlermeldungen Tools - Maven, Gradle, Ant & mehr 12
T Maven und Datenbank(treiber) Tools - Maven, Gradle, Ant & mehr 13
T Maven Runnable Jar Tools - Maven, Gradle, Ant & mehr 5
T Grundlagen Maven und Git/Github Tools - Maven, Gradle, Ant & mehr 2
L Maven Maven Surefire Plugin - Warnings upgrade Tools - Maven, Gradle, Ant & mehr 2
G Maven upload Tools - Maven, Gradle, Ant & mehr 0
K Maven - Parent oder Dependency? Tools - Maven, Gradle, Ant & mehr 5
B Maven Maven deploy Tools - Maven, Gradle, Ant & mehr 4
H Jenkins keine Tests gefunden - aber in Maven Tools - Maven, Gradle, Ant & mehr 30
P Mit Maven einen spezifischen Branch nach Tag-Parameter erstellen (in Jenkins-Job) Tools - Maven, Gradle, Ant & mehr 3
P Nur einen Teilbaum in Maven releasen? Tools - Maven, Gradle, Ant & mehr 7
H Maven - keine Durchführung von Tests Tools - Maven, Gradle, Ant & mehr 12
H Jenkins - maven-jar-plugin - kein jar-file Tools - Maven, Gradle, Ant & mehr 38
P Maven & Intellij Modul kann nicht aufgelöst werden Tools - Maven, Gradle, Ant & mehr 12
H Eclipse JUnit erzeugt Fehler im Maven-Test Tools - Maven, Gradle, Ant & mehr 1
H Maven Anfängerproblem - No plugin found for prefix 'archetype' in the current project and in the plugin groups Tools - Maven, Gradle, Ant & mehr 25
sascha-sphw Maven vs Gradle Tools - Maven, Gradle, Ant & mehr 24
D Maven Maven und die Build-Geschwindigkeit Tools - Maven, Gradle, Ant & mehr 11
J Maven Mit Maven eine ZIP Datei erstellen Tools - Maven, Gradle, Ant & mehr 0
K Maven install schlägt fehl Tools - Maven, Gradle, Ant & mehr 10
I Problem: Maven import extern Lib Tools - Maven, Gradle, Ant & mehr 3
Tom299 Maven Maven funktioniert nach Installation nicht Tools - Maven, Gradle, Ant & mehr 1
I Maven Interface hinzugefügt - Error Tools - Maven, Gradle, Ant & mehr 1
M Verständnisfrage Maven Tools - Maven, Gradle, Ant & mehr 2
S Maven installieren - "Befehl wurde nicht gefunden" Tools - Maven, Gradle, Ant & mehr 1
E Maven: Wie Abhängigkeiten analysieren? Tools - Maven, Gradle, Ant & mehr 0
E Maven Maven distributionManagement Vererbung in child POM Tools - Maven, Gradle, Ant & mehr 8
P Maven Parent- Child POMs Tools - Maven, Gradle, Ant & mehr 13
E Release Kandidaten mit Maven bauen Tools - Maven, Gradle, Ant & mehr 4
C Orderstruktur bei Libarys - Wie mit Ant oder Maven lösen? Tools - Maven, Gradle, Ant & mehr 0
G Maven, finde Dependency nicht... Tools - Maven, Gradle, Ant & mehr 2
G Maven Continious Integration mit Jenkins, Maven und Nexus - wie richtig? Tools - Maven, Gradle, Ant & mehr 1
P Maven Parent und Child Poms - dependencies Tools - Maven, Gradle, Ant & mehr 1
reibi Maven Maven + Eclipse Tools - Maven, Gradle, Ant & mehr 0
P Maven add resource Tools - Maven, Gradle, Ant & mehr 0
D [Maven Pluginentwicklung] - Plugin das nur auf Parent pom läuft Tools - Maven, Gradle, Ant & mehr 0
S Maven Maven und Auflösen von JSF EL Tools - Maven, Gradle, Ant & mehr 5
H Maven HSQLDB in den Maven lifecycle einbinden Tools - Maven, Gradle, Ant & mehr 5
S Maven Unterschiedliche Deployments mit Maven Tools - Maven, Gradle, Ant & mehr 2
S Maven buildnumber-maven-plugin / Formatproblem mit timestamp Tools - Maven, Gradle, Ant & mehr 17
P Erzeugen von WebServices mit Maven und Eclipse (external Tool) Tools - Maven, Gradle, Ant & mehr 2

Ähnliche Java Themen

Neue Themen


Oben