Probleme bei der Erstellung und Ausführung einer Jar Datei

Karaa

Mitglied
Hallo liebe Community,

Ich als Java Anfänger wollte wissen wie ich aus einem JavaFX Projekt eine ausführbare Jar Datei erstellen kann. Auf der Seite
openjfx habe ein Gradle JavaFX Sample runtergeladen um damit ein wenig zu experimentieren. Im Terminal gab ich den Befehl gradle build ein, dieser erstellte eine Jar und gab keine Fehler an. Beim ausführen der Jar allerdings passiert nichts. Ich habe dann versucht mit dem Befehl java -jar die Jar auszuführen und es kam folgende Meldung: "no main manifest attribute in..." Wenn ich aber das Programm in Visual Code Studio starte öffnet sich die JavaFX Anwendung ohne Probleme...

Könnt ihr mir helfen wie ich aus diesem Sample eine lauffähige Jar erstellen kann damit ich auch zukünftig beim Erstellen von JavaFX Anwendungen keine Probleme bekomme, denn bei meinem JavaFX Programm habe ich nämlich das selbe Problem...

Ich nutze Gradle 6.2, Visual Studio Code und java 13.0.2

Hier die build.gradle:

Code:
plugins {
  id 'application'
  id 'org.openjfx.javafxplugin' version '0.0.8'
}

repositories {
    mavenCentral()
}

javafx {
    version = "13"
    modules = [ 'javafx.controls' ]
}

mainClassName = 'HelloFX'

und die einzige Klasse:
Java:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class HelloFX extends Application {

    @Override
    public void start(Stage stage) {
        String javaVersion = System.getProperty("java.version");
        String javafxVersion = System.getProperty("javafx.version");
        Label l = new Label("Hello, JavaFX " + javafxVersion + ", running on Java " + javaVersion + ".");
        Scene scene = new Scene(new StackPane(l), 640, 480);
        stage.setScene(scene);
        stage.show();
    }

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

}
 
Gradle baut nur dein Jar mit deinem Code, JavaFX steht in deinen Jar nicht drin.

Die IDE wird dir einen Klassenpfad (-cp) automatisch aufbauen, in dem zum einen dein Programm liegt, und zum anderen auch alle referenzierten Jars. Daher kannst du das problemlos über die IDE starten.

Wenn du das selbst von der Kommandozeile ausführst muss du natürlich alle Jars und Pfade von Hand angeben.
 
Hallo liebe Community,

Ich als Java Anfänger wollte wissen wie ich aus einem JavaFX Projekt eine ausführbare Jar Datei erstellen kann. Auf der Seite
openjfx habe ein Gradle JavaFX Sample runtergeladen um damit ein wenig zu experimentieren. Im Terminal gab ich den Befehl gradle build ein, dieser erstellte eine Jar und gab keine Fehler an. Beim ausführen der Jar allerdings passiert nichts. Ich habe dann versucht mit dem Befehl java -jar die Jar auszuführen und es kam folgende Meldung: "no main manifest attribute in..." Wenn ich aber das Programm in Visual Code Studio starte öffnet sich die JavaFX Anwendung ohne Probleme...

Könnt ihr mir helfen wie ich aus diesem Sample eine lauffähige Jar erstellen kann damit ich auch zukünftig beim Erstellen von JavaFX Anwendungen keine Probleme bekomme, denn bei meinem JavaFX Programm habe ich nämlich das selbe Problem...

Ich nutze Gradle 6.2, Visual Studio Code und java 13.0.2

Hier die build.gradle:

Code:
plugins {
  id 'application'
  id 'org.openjfx.javafxplugin' version '0.0.8'
}

repositories {
    mavenCentral()
}

javafx {
    version = "13"
    modules = [ 'javafx.controls' ]
}

mainClassName = 'HelloFX'

und die einzige Klasse:
Java:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class HelloFX extends Application {

    @Override
    public void start(Stage stage) {
        String javaVersion = System.getProperty("java.version");
        String javafxVersion = System.getProperty("javafx.version");
        Label l = new Label("Hello, JavaFX " + javafxVersion + ", running on Java " + javaVersion + ".");
        Scene scene = new Scene(new StackPane(l), 640, 480);
        stage.setScene(scene);
        stage.show();
    }

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

}

Hi,

ich habe die letzten paar male immer mit jlink das komplette mit Image erzeugen lassen, in der Regel ist da immer eine Bat Datei dabei, dann kannst du das auch problemlos ausführen.

Beispiel mit JLink
Code:
plugins {
  id 'application'
  id 'org.openjfx.javafxplugin' version '0.0.8'
  id 'org.beryx.jlink' version '2.12.0'
}

javafx {
    version = "13"
    modules = [ 'javafx.controls' ]
}

jlink {
    launcher {
        name = 'hellofx'
    }
}

Grüße
lam
 

Zurück
Oben