K
kneitzel
Gast
Hallo zusammen,
ich bin jetzt auf ein interessantes Problem gestoßen und sehe irgendwie gerade nicht die Lösung...
Problem ist einfach: JavaFX Projekt mit Abhängigkeiten ohne Moduldefinition
javafx:jlink läuft damit auf einen Fehler:
Error: automatic module cannot be used with jlink
Das ist soweit ja alles klar und verständlich. Daher bietet sich ja moditect an. Mittels moditect kann ich entsprechende module-info.java Dateien erzeugen oder die jar Files patchen.
Aber irgendwie stehe ich auf dem Schlauch: Wie bekomme ich das javafx plugin dazu, dies beim goal javafx:jlink zu berücksichtigen?
Einfach mal meine aktuellen Versuche im pom.xml:
Das erste execute erzeugt module-info.java Files in target/generated-sources/modules/...
Das zweite execute erzeugt gepatchte jar Files in target/modules/
Wäre nett, wenn jemand mir bei meinen "Tomaten auf den Augen" helfen könnte ... irgendwie sehe ich da gerade nicht den Ansatz ...
Oder muss ich da das jlink vom javafx Plugin vergessen und das Image von moditect erzeugen lassen?
Vielen Dank schon jetzt für eure Unterstützung.
ich bin jetzt auf ein interessantes Problem gestoßen und sehe irgendwie gerade nicht die Lösung...
Problem ist einfach: JavaFX Projekt mit Abhängigkeiten ohne Moduldefinition
javafx:jlink läuft damit auf einen Fehler:
Error: automatic module cannot be used with jlink
Das ist soweit ja alles klar und verständlich. Daher bietet sich ja moditect an. Mittels moditect kann ich entsprechende module-info.java Dateien erzeugen oder die jar Files patchen.
Aber irgendwie stehe ich auf dem Schlauch: Wie bekomme ich das javafx plugin dazu, dies beim goal javafx:jlink zu berücksichtigen?
Einfach mal meine aktuellen Versuche im pom.xml:
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 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>de.kneitzel</groupId>
<artifactId>TestApp</artifactId>
<version>1.0-SNAPSHOT</version>
<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>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>15.0.1</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-fxml</artifactId>
<version>15.0.1</version>
</dependency>
<dependency>
<groupId>de.jensd</groupId>
<artifactId>fontawesomefx-fontawesome</artifactId>
<version>4.7.0-9.1.2</version>
</dependency>
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.34.0</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>kernel</artifactId>
<version>7.1.14</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>layout</artifactId>
<version>7.1.14</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>io</artifactId>
<version>7.1.14</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-jdk14</artifactId>
<version>1.7.30</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<release>15</release>
<source>15</source>
<target>15</target>
</configuration>
</plugin>
<plugin>
<groupId>org.openjfx</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>0.0.5</version>
<configuration>
<mainClass>de.kneitzel.LoginApp</mainClass>
</configuration>
</plugin>
<plugin>
<groupId>org.moditect</groupId>
<artifactId>moditect-maven-plugin</artifactId>
<version>1.0.0.RC1</version>
<executions>
<execution>
<id>generate-module-info</id>
<phase>generate-sources</phase>
<goals>
<goal>generate-module-info</goal>
</goals>
<configuration>
<modules>
<module>
<artifact>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</artifact>
</module>
<module>
<artifact>
<groupId>com.itextpdf</groupId>
<artifactId>layout</artifactId>
<version>7.1.14</version>
</artifact>
</module>
<module>
<artifact>
<groupId>com.itextpdf</groupId>
<artifactId>kernel</artifactId>
<version>7.1.14</version>
</artifact>
</module>
</modules>
<jdepsExtraArgs>
<args>--multi-release</args> <args>15</args>
</jdepsExtraArgs>
</configuration>
</execution>
<execution>
<id>add-module-infos</id>
<phase>generate-resources</phase>
<goals>
<goal>add-module-info</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/modules</outputDirectory>
<modules>
<module>
<artifact>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</artifact>
<moduleInfoSource>
module org.apache.commons.lang3 {
requires java.desktop;
exports org.apache.commons.lang3;
exports org.apache.commons.lang3.arch;
exports org.apache.commons.lang3.builder;
exports org.apache.commons.lang3.compare;
exports org.apache.commons.lang3.concurrent;
exports org.apache.commons.lang3.concurrent.locks;
exports org.apache.commons.lang3.event;
exports org.apache.commons.lang3.exception;
exports org.apache.commons.lang3.function;
exports org.apache.commons.lang3.math;
exports org.apache.commons.lang3.mutable;
exports org.apache.commons.lang3.reflect;
exports org.apache.commons.lang3.stream;
exports org.apache.commons.lang3.text;
exports org.apache.commons.lang3.text.translate;
exports org.apache.commons.lang3.time;
exports org.apache.commons.lang3.tuple;
}
</moduleInfoSource>
</module>
<module>
<artifact>
<groupId>com.itextpdf</groupId>
<artifactId>layout</artifactId>
<version>7.1.14</version>
</artifact>
<moduleInfoSource>
module layout {
requires org.slf4j;
requires io;
requires java.xml;
requires kernel;
exports com.itextpdf.layout;
exports com.itextpdf.layout.borders;
exports com.itextpdf.layout.element;
exports com.itextpdf.layout.font;
exports com.itextpdf.layout.hyphenation;
exports com.itextpdf.layout.layout;
exports com.itextpdf.layout.margincollapse;
exports com.itextpdf.layout.minmaxwidth;
exports com.itextpdf.layout.property;
exports com.itextpdf.layout.renderer;
exports com.itextpdf.layout.renderer.objectfit;
exports com.itextpdf.layout.splitting;
exports com.itextpdf.layout.tagging;
}
</moduleInfoSource>
</module>
<module>
<artifact>
<groupId>com.itextpdf</groupId>
<artifactId>kernel</artifactId>
<version>7.1.14</version>
</artifact>
<moduleInfoSource>
module kernel {
requires java.logging;
requires org.bouncycastle.provider;
requires org.slf4j;
requires io;
requires java.desktop;
requires java.xml;
requires org.bouncycastle.pkix;
exports com.itextpdf.kernel;
exports com.itextpdf.kernel.colors;
exports com.itextpdf.kernel.colors.gradients;
exports com.itextpdf.kernel.counter;
exports com.itextpdf.kernel.counter.context;
exports com.itextpdf.kernel.counter.data;
exports com.itextpdf.kernel.counter.event;
exports com.itextpdf.kernel.crypto;
exports com.itextpdf.kernel.crypto.securityhandler;
exports com.itextpdf.kernel.events;
exports com.itextpdf.kernel.font;
exports com.itextpdf.kernel.geom;
exports com.itextpdf.kernel.log;
exports com.itextpdf.kernel.numbering;
exports com.itextpdf.kernel.pdf;
exports com.itextpdf.kernel.pdf.action;
exports com.itextpdf.kernel.pdf.annot;
exports com.itextpdf.kernel.pdf.annot.da;
exports com.itextpdf.kernel.pdf.canvas;
exports com.itextpdf.kernel.pdf.canvas.draw;
exports com.itextpdf.kernel.pdf.canvas.parser;
exports com.itextpdf.kernel.pdf.canvas.parser.clipper;
exports com.itextpdf.kernel.pdf.canvas.parser.data;
exports com.itextpdf.kernel.pdf.canvas.parser.filter;
exports com.itextpdf.kernel.pdf.canvas.parser.listener;
exports com.itextpdf.kernel.pdf.canvas.parser.util;
exports com.itextpdf.kernel.pdf.canvas.wmf;
exports com.itextpdf.kernel.pdf.collection;
exports com.itextpdf.kernel.pdf.colorspace;
exports com.itextpdf.kernel.pdf.extgstate;
exports com.itextpdf.kernel.pdf.filespec;
exports com.itextpdf.kernel.pdf.filters;
exports com.itextpdf.kernel.pdf.function;
exports com.itextpdf.kernel.pdf.layer;
exports com.itextpdf.kernel.pdf.navigation;
exports com.itextpdf.kernel.pdf.tagging;
exports com.itextpdf.kernel.pdf.tagutils;
exports com.itextpdf.kernel.pdf.xobject;
exports com.itextpdf.kernel.security;
exports com.itextpdf.kernel.utils;
exports com.itextpdf.kernel.xmp;
exports com.itextpdf.kernel.xmp.impl;
exports com.itextpdf.kernel.xmp.impl.xpath;
exports com.itextpdf.kernel.xmp.options;
exports com.itextpdf.kernel.xmp.properties;
}
</moduleInfoSource>
</module>
</modules>
<overwriteExistingFiles>true</overwriteExistingFiles>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Das erste execute erzeugt module-info.java Files in target/generated-sources/modules/...
Das zweite execute erzeugt gepatchte jar Files in target/modules/
Wäre nett, wenn jemand mir bei meinen "Tomaten auf den Augen" helfen könnte ... irgendwie sehe ich da gerade nicht den Ansatz ...
Oder muss ich da das jlink vom javafx Plugin vergessen und das Image von moditect erzeugen lassen?
Vielen Dank schon jetzt für eure Unterstützung.
Zuletzt bearbeitet von einem Moderator: