JavaFX jar mit Maven

psp3006

Mitglied
Abend,

nachdem mir schon bei meinen anderen "Problem" geholfen wurde, habe ich jetzt das nächste.

Ich habe mit JavaFX eine kleine Test-Gui erzeugt und möchte diese mittelsjava -jar gui-0.1.0-SNAPSHOT.jar ausführen.
Bekomme aber immer die Meldung no main manifest attribute, in .\gui-0.1.0-SNAPSHOT.jar

Mittels mvn exec:exec kann ich die Anwendung ausführen.

[CODE lang="xml"]<?xml version="1.0" encoding="UTF-8"?>
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>


<groupId>com.example.calc</groupId>
<artifactId>gui</artifactId>
<version>0.1.0-SNAPSHOT</version>
<packaging>jar</packaging>

<dependencies>
<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>
<dependency>
<groupId>com.example.calc</groupId>
<artifactId>operator</artifactId>
<version>1.0.0-SNAPSHOT</version>
<type>jar</type>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<release>11</release>
<source>11</source>
<target>11</target>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.6.0</version>
<executions>
<execution>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
<configuration>
<skip>false</skip>
<executable>java</executable>
<arguments>
<argument>--module-path</argument> <!-- or -p -->
<modulepath/>
<!-- automatically creates the modulepath using all project dependencies,
also adding the project build directory -->
<argument>--module</argument> <!-- or -m -->
<argument>com.example.calc.gui/com.example.calc.gui.GuiMain</argument>
</arguments>
</configuration>
</plugin>
</plugins>
</build>

</project>
[/CODE]

[CODE lang="java"]package com.example.calc.gui;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;


public class GuiMain extends Application {

public static void main(String[] args) {
Application.launch(args);
}

@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("Calculator - FirstGUI");

Parent root = FXMLLoader.load(getClass().getResource("/calculator.fxml"));

Scene scene = new Scene(root, 400, 200);

primaryStage.setScene(scene);
primaryStage.show();
}

}
[/CODE]

[CODE lang="java"]module com.example.calc.gui {
requires javafx.fxml;
requires javafx.controls;

requires com.example.calc.operator;

exports com.example.calc.gui to javafx.graphics;
}
[/CODE]


Zusätzlich habe ich es euch auch wieder in ne ZIP-Datei gepackt.

Vielleicht kann mir ja wer helfen.
 

Anhänge

  • Maven-Module.zip
    9,5 KB · Aufrufe: 0
K

kneitzel

Gast
Auch nur zur Erläuterung:

Dein jar File enthält nicht die main class. Denn die gibst Du nicht an. Du hast da nur was bei einem exec plugin angegeben. Das macht aber nur eine direkte Ausführung und beeinflusst nicht den Bau des jar Files. Was Du also brauchen würdest, wäre sowas wie:
Java:
<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>com.maventest.App</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>

Aber bei JavaFX würde Dir das nicht viel nützen, es sei denn Du arbeitest mit einem Java, das bereits ein JavaFX enthält. (Bellsoft full JDK z.B.)

Daher solltest Du so wie es @mihe7 bereits gesagt hat, das javafx plugin nutzen.

Das wird auch schon auf openjfx.io entsprechend gezeigt: https://openjfx.io/openjfx-docs/#maven

Wenn man etwas weiter geben möchte, dann sollte man aber auch das jlink entsprechend mit konfigurieren und dann landen wir bei etwas wie:
oder auch

Das erste zeigt eine JavaFX Applikation, die ich von eclipse Project build zu einer Maven Applikation mache. Enthät aber auch direkt
- das Ausführen und bauen des Images
- Das weitere Verarbeiten des Images mit JPackage (ab OpenJDK 14)

Und ganz wichtig, nur um es einmal ganz deutlich zu sagen:
Du baust dann kein JAR mehr zu, weiter geben, denn dies ist so leider recht problematisch. Statt dessen baust Du ein sogenanntes Images und dieses gibst Du dann weiter.
 
K

kneitzel

Gast
Ja, wobei ich die Videos noch prüfen muss ... bei meinem Videos hat teilweise meine Schnittsoftware mich etwas geärgert und bei mindestens zwei Videos sind Teile ohne Bild ... Was beim Export passiert sein muss, denn ich habe ja das ganze Video geprüft / geschnitten ... Da wird es jetzt nach und nach Ersatz für geben ...
 
K

kneitzel

Gast
Die beiden betroffenen Videos habe ich jetzt einmal neu erstellt und neu eingestellt (Ersetzen des original Videos geht leider nicht bei YouTube).
Wobei diese beiden Videos nicht betroffen waren. IT Erklärbär istohne großes Editieren entstanden und das zweite Video ist auf Linux entstanden meine ich - also ohne irgend welche buggy Windows Software ... Schade nur, dass ich da auch noch Geld für Schrott ausgegeben habe - Open Source Lösungen gibt es auch vernünftige ...
 

psp3006

Mitglied
Abend,
habe es nun geschafft mit den javafx-maven-plugin geschafft eine jar zubauen die auch ausführbar ist. Das Video habe ich mir dennoch mal angeschaut, dann weis ich jetzt auch was es noch für ne alternative gibt.
Danke euch
 

psp3006

Mitglied
Ich hab da nochmal ne frage.
Wenn ich jetzt eine Dependency aus der fertigen Jar-Datei ausschließen möchte , so das ich dieses Dependeny immer als seperate Jar-Datei im ausführenden Ordner liegen haben muss.
 
K

kneitzel

Gast
Also da Du uns keine Informationen gegeben hast, wie Du nun dein jar File baust, ist das so pauschal nicht zu beantworten.

Das jar File, das maven in der Regel baut, ist kein uber / fat jar, d.h. die Abhängigkeiten sind nicht enthalten. Dein Hinweis auf das javafx-maven-plugin (von org.openjfx nehme ich an - nicht das du irgendwas anderes nutzt ... Aber auf dieses plugin wurdest Du hier ja hingewiesen) ist wenig hilfreich, denn dieses plugin hat eben meiner Meinung nach auch keine uber jar Funktionalität. Es bietet das run und jlink Ziel. Die Entwickler sehen die Erstellung eines Runtime Images vor zur Weitergabe.

So ein uber jar kann z.B. mit dem maven shade plugin gebaut werden. Dieses bietet filter und artifactSets:

Falls Du das nicht nutzt gibt es ggf. auch irgendwelche "Tricksereien" um z.B. eine Abhängigkeit als provided einzubinden um es dann aber an anderer Stelle beim Ausführen wieder mit in den classpath mit aufzunehmen ... Das wäre das Vorgehen bei Application Servern, die ja gewisse Libraries immer dabei haben so dass diese nicht mitgegeben werden dürfen. Im JavaFX Umfeld sehe ich dies aber eher als dubios an muss ich gestehen. Zumindest verkompliziert es das Projekt. Daher:

Ich bleibe weiterhin dabei: Ich sehe da irgendwie keinen Sinn in so einem Vorgehen. https://openjfx.io/openjfx-docs/ zeigt auf, wie aus Sicht der "JavaFX Entwickler" die Runtime Images gebaut werden sollten incl. der Funktionalität des plugins, damit es eben eine einfache, kleine pom.xml bleibt, die auch weniger versierte Entwickler verstehen können und die einen schnellen Einstieg ohne viel erlernen zu müssen, bietet. Das heißt nicht, dass es nicht auch andere Wege geben sollte, aber da sollte man sich dann aus meiner Sicht auf jeden Fall tiefer einlesen und verstehen, was man da macht, denn das ist dann in der Regel ein weniger unterstützter Weg, d.h. weniger "Dokumentation" bezüglich des Anwendungsbereiches und weniger Leute, die da intensiv Erfahrungen gesammelt haben....
 

psp3006

Mitglied
Hi, sorry für die späte Antwort. Inzwischen habe ich es mit dem Maven Shade Plugin hinbekommen.
Dafür habe ich das Maven Shade Plugin

XML:
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>2.4.3</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
            <configuration>
                <artifactSet>
                    <excludes>
                        <exclude>mein.package:MainClass</exclude>
                    </excludes>
                </artifactSet>
                <transformers>
                    <!-- add Main-Class to manifest file -->
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                        <mainClass>${main.class}</mainClass>
                    </transformer>
                </transformers>
            </configuration>
        </execution>
    </executions>
</plugin>

und das Maven Jar Plugin wie folgt konfiguriert
XML:
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>3.2.0</version>
    <configuration>
        <archive>
            <manifest>
                <mainClass>${main.class}</mainClass>
                <addClasspath>true</addClasspath>
            </manifest>
        </archive>
    </configuration>
</plugin>
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Encera JavaFX und Maven funktioniert nicht Tools - Maven, Gradle, Ant & mehr 1
T Image kreieren mit Maven bei JavaFX und nicht modularen Jars Tools - Maven, Gradle, Ant & mehr 12
T JavaFX, Jar über Maven kreieren Tools - Maven, Gradle, Ant & mehr 2
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
K Maven IntelliJ + Maven + JavaFX Tools - Maven, Gradle, Ant & mehr 2
S Javafx App mit MySQL Anbindung als exe bereitstellen Tools - Maven, Gradle, Ant & mehr 9
B JavaFX 14 Projekt als EXE (ich verzweifle) Tools - Maven, Gradle, Ant & mehr 14
L JavaFX Jar erzeugen Tools - Maven, Gradle, Ant & mehr 4
P JavaFX als Bundles ausliefern Tools - Maven, Gradle, Ant & mehr 4
Oneixee5 Maven deploy - per SSH Tools - Maven, Gradle, Ant & mehr 6
H Maven kein Hauptmanifestattribut Tools - Maven, Gradle, Ant & mehr 10
M Programm mit Maven erstellen und starten samt Abhängigkeiten Tools - Maven, Gradle, Ant & mehr 27
D Interne Dependencies in Maven Tools - Maven, Gradle, Ant & mehr 51
J log4j2 mit Hibernate über Maven Tools - Maven, Gradle, Ant & mehr 10
thor_norsk Maven Build Failed: kann nicht von start.spring.io generiertes Projekt auf IntelliJ IDE starten Tools - Maven, Gradle, Ant & mehr 8
H Maven JUnit5 Tests werden ignoriert Tools - Maven, Gradle, Ant & mehr 5
thor_norsk Maven Tools - Maven, Gradle, Ant & mehr 32
ExceptionOfExpectation Maven Build Failed: kann nicht von start.spring.io generiertes Projekt auf Eclipse starten Tools - Maven, Gradle, Ant & mehr 20
Ich kann Maven nicht als UmgebungsVariable hinzufügen Tools - Maven, Gradle, Ant & mehr 2
F Maven JAR Plugin Probleme Tools - Maven, Gradle, Ant & mehr 4
W Was "braucht" man denn alles? Maven, Ant, Git, ... Tools - Maven, Gradle, Ant & mehr 21
N Fehler beim Imgui mit Maven Tools - Maven, Gradle, Ant & mehr 7
M Spring Boot Maven pom.xml-Eintrag Tools - Maven, Gradle, Ant & mehr 17
B maven multi module Projekt und unnötige/zusätzliche Leerzeilen Tools - Maven, Gradle, Ant & mehr 4
J Maven Konfusion Tools - Maven, Gradle, Ant & mehr 7
Tippster Maven Sqlite integrieren (Eclipse, Maven) Tools - Maven, Gradle, Ant & mehr 4
T JSON Dependencies in Maven Tools - Maven, Gradle, Ant & mehr 7
Encera 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
LimDul 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
LimDul 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
aze Maven downgraden von 3.x auf 2.09 unter Linux Tools - Maven, Gradle, Ant & mehr 4
Rudolf JSF und Maven mit Eclipse Tools - Maven, Gradle, Ant & mehr 5
M Maven-Dependency kann nicht gefunden werden Tools - Maven, Gradle, Ant & mehr 2
M Maven imports aus Modulen Tools - Maven, Gradle, Ant & mehr 4
P multimodul maven in SVN Tools - Maven, Gradle, Ant & mehr 3

Ähnliche Java Themen

Neue Themen


Oben