Maven Jlink Image macht nur .dll Files

Nilsy8214

Aktives Mitglied
ich habe mir dieses [CODE title="nur hier weil das sonst irgendwie nicht geht"]https://www.youtube.com/watch?v=yG8YCLYccVo&list=WL&index=17&t=406s[/CODE] Tutorial angeguckt um mit Jlink ein Image zu erstellen im image Ordner kommen bei mir jedoch nur .dll Files und ein Odner namens server woran kann das liegen?
 
K

kneitzel

Gast
Tutorial angeguckt um mit Jlink ein Image zu erstellen im image Ordner kommen bei mir jedoch nur .dll Files und ein Odner namens server woran kann das liegen?
Du hast dann wohl etwas falsch gemacht. Sorry, aber mehr kann ich dazu nicht sagen. Das ist wie: "Ich habe so wie in der Fahrschule gelernt alles gemacht aber mein Auto fährt nicht. Woran kann das liegen?"

Also bitte immer Details bringen:
Was genau hast Du gemacht? Wie sieht Dein Projekt aus? Wo hast Du dann genau geschaut und welche Dateien hast Du da genau gefunden?
 

Nilsy8214

Aktives Mitglied
Du hast dann wohl etwas falsch gemacht. Sorry, aber mehr kann ich dazu nicht sagen. Das ist wie: "Ich habe so wie in der Fahrschule gelernt alles gemacht aber mein Auto fährt nicht. Woran kann das liegen?"

Also bitte immer Details bringen:
Was genau hast Du gemacht? Wie sieht Dein Projekt aus? Wo hast Du dann genau geschaut und welche Dateien hast Du da genau gefunden?
Also mein Projkt hat halt diese struktur (Bild)
in der Main steht das drin
[CODE lang="java" title="Main"]package org.openjfx;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;

public class Main extends Application {
public static void main(String[] args) {
launch();
}

@Override
public void start(Stage stage) throws Exception {
Pane root = new Pane();
Scene scene = new Scene(root,200,200);
stage.setScene(scene);
stage.show();
}

}
[/CODE]
Also halt nur um das zu testen ein Fenster mit 200 * 200

dann in der module-info.java steht
[CODE lang="java" title="module-info.java"]module Test {


requires javafx.controls;
requires javafx.fxml;

opens org.openjfx to javafx.fxml;
exports org.openjfx;
}[/CODE]

in der pom.xml

[CODE lang="java" title="pom"]<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.openjfx</groupId>
<artifactId>hellofx</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.release>11</maven.compiler.release>
<javafx.version>16</javafx.version>
<javafx.maven.plugin.version>0.0.6</javafx.maven.plugin.version>
</properties>
<dependencies>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>${javafx.version}</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-fxml</artifactId>
<version>${javafx.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<release>${maven.compiler.release}</release>
</configuration>
</plugin>
<plugin>
<groupId>org.openjfx</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>${javafx.maven.plugin.version}</version>
<configuration>
<compress>2</compress>

<mainClass>org.openjfx.App</mainClass>
</configuration>
</plugin>
</plugins>
</build>
</project>[/CODE]

dann bin ich in das maven tool Fenster gegenagen hellofx -> Plugins -> javafx -> javafx:jlink

dann kamm unten das
Code:
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------< org.openjfx:hellofx >-------------------------
[INFO] Building hellofx 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] >>> javafx-maven-plugin:0.0.6:jlink (default-cli) > process-classes @ hellofx >>>
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ hellofx ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ hellofx ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] <<< javafx-maven-plugin:0.0.6:jlink (default-cli) < process-classes @ hellofx <<<
[INFO]
[INFO]
[INFO] --- javafx-maven-plugin:0.0.6:jlink (default-cli) @ hellofx ---
[INFO] Toolchain in javafx-maven-plugin null
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  10.676 s
[INFO] Finished at: 2021-11-20T15:55:46+01:00
[INFO] ------------------------------------------------------------------------

Process finished with exit code 0

und dann bin ich in target -> image -> bin
dort waren dann diese Datein (Bild)

in dem Ordner "server" war eine Datei namens "jvm.dll"
 

Anhänge

  • kuzjhbgftvdcsxa.PNG
    kuzjhbgftvdcsxa.PNG
    21,9 KB · Aufrufe: 1
  • asdfjkhgjkljhgfdjkjhgfd.PNG
    asdfjkhgjkljhgfdjkjhgfd.PNG
    44,4 KB · Aufrufe: 2
K

kneitzel

Gast
Also das Vorgehen ist soweit erst einmal komplett richtig.

Bitte füge in die Configuration noch ein:
<launcher>hellofx<launcher>

Dann bekommst Du in dem bin Verzeichnis noch ein hellofx.bat und ein hellofx File.

Das wäre dann das Start Script zum Start der Anwendung.

Wenn Du auf das Script verzichten willst, dann ist das auch nur ein relativ einfacher Aufruf wie:
Code:
@echo off
set JLINK_VM_OPTIONS=
set DIR=%~dp0
"%DIR%\java" %JLINK_VM_OPTIONS% -m Test/org.openjfx.App %*

Somit kann das java.exe, das du in bin hast mit dem entsprechenden Parameter gestartet werden.
 

Nilsy8214

Aktives Mitglied
Also das Vorgehen ist soweit erst einmal komplett richtig.

Bitte füge in die Configuration noch ein:
<launcher>hellofx<launcher>

Dann bekommst Du in dem bin Verzeichnis noch ein hellofx.bat und ein hellofx File.

Das wäre dann das Start Script zum Start der Anwendung.

Wenn Du auf das Script verzichten willst, dann ist das auch nur ein relativ einfacher Aufruf wie:
Code:
@echo off
set JLINK_VM_OPTIONS=
set DIR=%~dp0
"%DIR%\java" %JLINK_VM_OPTIONS% -m Test/org.openjfx.App %*

Somit kann das java.exe, das du in bin hast mit dem entsprechenden Parameter gestartet werden.
Also ich habe zwei mal Configuration in den einem Makiert mir Intellij das direkt rot in dem anderem kommt

das
Code:
Failed to execute goal org.openjfx:javafx-maven-plugin:0.0.6:jlink (default-cli) on project hellofx: Error
 

Nilsy8214

Aktives Mitglied
Da fehlt natürlich ein / beim zweiten <launcher>

Das ist ja eine XML Datei und man hat da ein öffnenden Tag und ein schliessendes Tag.

<launcher>hellofx</launcher>

Beim eingeben im Forum hat man leider schnell so einen Tippfehler.
das Funktioniert immernoch nicht kann es sein das etwas in der pom grundlegend falsch ist oder anders gefragt wie schreibt man so eine pom eigentlich weil die ist jetzt nur kopiert
 
K

kneitzel

Gast
Du hast das an diese Stelle gepackt?

XML:
<plugin>
                <groupId>org.openjfx</groupId>
                <artifactId>javafx-maven-plugin</artifactId>
                <version>${javafx.maven.plugin.version}</version>
                <configuration>
                    <compress>2</compress>

                  <launcher>xxx</launcher>  <mainClass>org.openjfx.App</mainClass>
                </configuration>
            </plugin>

Bezüglich Aufbau schreibe ich später noch etwas, wenn ich nicht mehr am Handy bin.

Generell: kopieren ist ok - das ist vermutlich das 08/15 Vorgehen der Meisten.
 

Nilsy8214

Aktives Mitglied
Du hast das an diese Stelle gepackt?

XML:
<plugin>
                <groupId>org.openjfx</groupId>
                <artifactId>javafx-maven-plugin</artifactId>
                <version>${javafx.maven.plugin.version}</version>
                <configuration>
                    <compress>2</compress>

                  <launcher>xxx</launcher>  <mainClass>org.openjfx.App</mainClass>
                </configuration>
            </plugin>

Bezüglich Aufbau schreibe ich später noch etwas, wenn ich nicht mehr am Handy bin.

Generell: kopieren ist ok - das ist vermutlich das 08/15 Vorgehen der Meisten.
Ja habe ich und das wäre sehr nett ansonsten mache ich mal ein neues Projekt und teste es da nochmal
 
K

kneitzel

Gast
Also mit dem launcher Eintrag sollte es zusätzlich zu den Dateien (Die bleiben natürlich!) noch die angesprochenen Batch Dateien geben für Windows und Unix/Mac. (Die werden immer beide erzeugt - aber das erzeugte Image läuft natürlich nur auf einer einzigen Plattform!)

Ansonsten kannst Du auch gerne mal bei https://github.com/kneitzel/blog-javafx-series/blob/master/03 helloworld - maven/pom.xml schauen - das ist ein einfaches kleines Beispiel für eine pom Datei für JavaFX.

Mit dem jlinkImageName wird übrigens der Name des Verzeichnisses gesetzt - dann landet das Image nicht in image sondern in dem dort gegebenen Namen.
 

Nilsy8214

Aktives Mitglied
Also mit dem launcher Eintrag sollte es zusätzlich zu den Dateien (Die bleiben natürlich!) noch die angesprochenen Batch Dateien geben für Windows und Unix/Mac. (Die werden immer beide erzeugt - aber das erzeugte Image läuft natürlich nur auf einer einzigen Plattform!)

Ansonsten kannst Du auch gerne mal bei https://github.com/kneitzel/blog-javafx-series/blob/master/03 helloworld - maven/pom.xml schauen - das ist ein einfaches kleines Beispiel für eine pom Datei für JavaFX.

Mit dem jlinkImageName wird übrigens der Name des Verzeichnisses gesetzt - dann landet das Image nicht in image sondern in dem dort gegebenen Namen.
ok das geht alles aber könnte man sowas in eine .exe machen
 
K

kneitzel

Gast
Mit Hilfe von JPackage (ab Java 14 verfügbar) kannst Du ein app-image erzeugen. Dann hast Du auch eine exe, die Du starten kannst. Aber du hast immer noch eine Verzeichnisstruktur mit vielen weiteren Dateien, die auch alle benötigt werden.

Eine andere Alternative ist z.B. GraalVM - dabei wird eine wirkliche EXE erstellt - aber dazu benötigst DU dann natürlich auch die entsprechende Build Umgebung (Also z.B. Visual Studio mit dem C++ Compiler).
 
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben