openjfx / samples

JavaFX samples to run with different options and build tools
BSD 3-Clause "New" or "Revised" License
578 stars 1.52k forks source link

Non Modular JavaFX 12 #35

Closed ghost closed 4 years ago

ghost commented 4 years ago

When i use maven and i do "mvn clean install" i can't run the jar file with "java -jar .jar"

Java version

openjdk version "12.0.2" 2019-07-16 OpenJDK Runtime Environment (build 12.0.2+10) OpenJDK 64-Bit Server VM (build 12.0.2+10, mixed mode, sharing)

command: "java -jar .jar" error: "no main manifest attribute, in .jar"

when doing that using this plugin in maven `

org.apache.maven.plugins
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.2</version>
<configuration>
    <archive>
        <manifest>
            <mainClass>nl.joshaprior.App</mainClass>
        </manifest>
    </archive>
</configuration>

` it gives me this error "Error: Could not find or load main class nl.joshaprior.App Caused by: java.lang.NoClassDefFoundError: javafx/application/Application"

when i google that issue and follow all the things i still get the same error

and when using a Start class that calls App.launch() (because i red somewhere that its because of that extends) it gives me this error


        at java.base/java.lang.ClassLoader.defineClass1(Native Method)
        at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
        at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:151)
        at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:802)
        at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:700)
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:623)
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
        at nl.joshaprior.Start.main(Start.java:7)
Caused by: java.lang.ClassNotFoundException: javafx.application.Application
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
        ... 10 more```
jperedadnr commented 4 years ago

mvn install does not bundle the JavaFX dependencies with in your jar. You have use mvn javafx:jlink to create a custom runtime, or if your project is not modular use the shade maven plugin. All is documented here: https://openjfx.io/openjfx-docs/#modular