How to create a fat jar for my JavaFX program?

Michael Paus mp at jugs.org
Mon Jul 20 17:39:21 UTC 2020


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.davide at 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>
>>>
>



More information about the openjfx-dev mailing list