Done it here.

https://github.com/sblantipodi/JavaFastScreenCapture/blob/JavaFXJavaModule/pom.xml

If you read my sources there is how to configure the maven pom.
You need then create a simple class with a main that doesn't extends application that simply call the main in the class that extends application.

Hope it helped

In data 20 luglio 2020 21:25:23 Davide Perini <perini.dav...@dpsoftware.org> ha scritto:

PS: I add that I'm not new to maven,
before java fx, I had a fat jar with gstreamer library, jna, and so on.

the only problem I have is that it seems that I'm not able to bundle
javafx with my fat jar.



Il 20/07/2020 20.55, Davide Perini ha scritto:
I agree, don't want to download a JDK.
Is there a way to simply to it the old but good way using maven
assembly plugin or shade plugin?

I am following this guide here:
https://openjfx.io/openjfx-docs/#modular

I have done what they suggest in my pom file:

<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> <dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-graphics</artifactId> <version>14</version>
<classifier>win</classifier> </dependency>


<plugin> <groupId>org.openjfx</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>${javafx.maven.plugin.version}</version> <configuration>
<mainClass>org.dpsoftware.FastScreenCapture</mainClass>
</configuration> </plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId> <configuration>
<outputDirectory>${project.build.directory}/</outputDirectory>
<finalName>JavaFastScreenCapture</finalName> </configuration>
<executions> <execution>
<id>make-executable-jar-with-dependencies</id> <phase>package</phase>
<goals> <goal>single</goal> </goals> <configuration> <archive>
<manifest> <addClasspath>true</addClasspath>
<mainClass>org.dpsoftware.FastScreenCapture</mainClass> </manifest>
</archive> <descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs>
</configuration> </execution> </executions> </plugin>


jar with dependencies says

Error: JavaFX runtime components are missing, and are required to run
this application


still don't understand how to do it the right way.
I would like to do it with maven, is this possible?

Thanks,
Davide

Il 20/07/2020 20.26, Scott Palmer ha scritto:
jlink and jdeps are module-based, so you do have to be careful.
Neither will work properly when you try to run it against a
non-modular project (found that out the hard way when Java 11 broke
the world by removing the EE modules from Java SE and no modules were
available to replace them), but you can use them to make a JRE image
from a set of modules, such as those supplied by OpenJFX.

I still think the .jmod files should be hosted by artifact
repositories to make this work smoothly.  Downloading an SDK, seems
so old-school when we have good dependency-management tools.

Once you have a JRE image that includes JavaFX, then your application
Jar files (all of them, no need to make anything 'fat') can easily be
bundled with that JRE using jpackage.

I have done Gradle scripts to do all that and it wasn’t difficult.

Scott

On Jul 20, 2020, at 1:39 PM, Michael Paus <m...@jugs.org> wrote:

In order to create a real platform installer with jpackage and
jlink/jdeps you don't have to use the java
module system at all. Have a look at this tutorial which I
co-autored together with Dirk Lemmermann:
<https://github.com/dlemmermann/JPackageScriptFX>
Michael

Am 20.07.20 um 19:25 schrieb Davide Perini:
Unfortunantly so few dependencies supports Java Modules this day,
so fat JAR is the only way I can do it.

Thanks

Il 20/07/2020 02.50, Scott Palmer ha scritto:
The JavaFX classes are there, but what about the native libraries?

A fat jar isn’t a good way to distribute a Java application these
days. Now you should probably be using jpackage and/or jlink to
bundle your application classes with a runtime suitable for
running the application.

Scott

On Jul 19, 2020, at 5:32 PM, Davide Perini
<perini.dav...@dpsoftware.org> wrote:

Hi all,
thanks for the great project, I love JavaFX.

I always used the maven plugin to crete fat jars with all my
deps. The resulting jar is an executable one and ready to use.

This is my pom that create the fat jar.

but when I try to exceute the jar I get this error:

Error: JavaFX runtime components are missing, and are required to
run this appli
cation


if I explode the fat jar I can see that there are the javafx
class in it. what am I doing wrong?

Thanks
Davide

<plugin> <groupId>org.openjfx</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>${javafx.maven.plugin.version}</version> <configuration>
<mainClass>org.dpsoftware.FastScreenCapture</mainClass>
</configuration> </plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId> <configuration>
<outputDirectory>${project.build.directory}/</outputDirectory>
<finalName>JavaFastScreenCapture</finalName> </configuration>
<executions> <execution>
<id>make-executable-jar-with-dependencies</id>
<phase>package</phase> <goals> <goal>single</goal> </goals>
<configuration> <archive> <manifest>
<addClasspath>true</addClasspath>
<mainClass>org.dpsoftware.FastScreenCapture</mainClass>
</manifest> </archive> <descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs> </configuration> </execution> </executions>
</plugin>



Reply via email to