Java FX Problem mit Ubuntu 18 und JavaFx

Lyreex

Aktives Mitglied
Hallo zusammen,

ich brauch mal wieder euren Rat.

Meine Umgebung:
- Ubuntu Mate (siehe Screenshot "Linux").
- IntelliJ IDEA
- OpenJDK 11.0.2 (siehe Screenshot "Java").

Mein Problem:
Ich will mit JavaFX eine Benutzeroberfläche darstellen. Auf meinem Windows Rechner hat das ganze ohne Problem funktioniert. Vor der neuinstallation von Ubuntu, hat es auch hier funktioniert. Jetzt leider nicht mehr.

Ich bekomme folgende Fehlermeldung beim compilieren des Projektes in IntelliJ:
/usr/lib/jvm/java-1.11.0-openjdk-amd64/bin/java --add-modules javafx.base,javafx.graphics --add-reads javafx.base=ALL-UNNAMED --add-reads javafx.graphics=ALL-UNNAMED -Djava.library.path=/home/janik/Downloads/javafx-sdk-11.0.2/lib -javaagent:/opt/idea-IC-191.6707.61/lib/idea_rt.jar=39353:/opt/idea-IC-191.6707.61/bin -Dfile.encoding=UTF-8 -classpath /home/janik/IdeaProjects/FireSubscriber/target/classes:/root/.m2/repository/org/eclipse/paho/org.eclipse.paho.client.mqttv3/1.0.2/org.eclipse.paho.client.mqttv3-1.0.2.jar:/root/.m2/repository/log4j/log4j/1.2.17/log4j-1.2.17.jar:/root/.m2/repository/commons-io/commons-io/2.6/commons-io-2.6.jar:/root/.m2/repository/com/miglayout/miglayout/3.7.4/miglayout-3.7.4.jar:/root/.m2/repository/com/google/code/gson/gson/2.8.5/gson-2.8.5.jar:/home/janik/Downloads/javafx-sdk-11.0.2/lib/src.zip:/home/janik/Downloads/javafx-sdk-11.0.2/lib/javafx-swt.jar:/home/janik/Downloads/javafx-sdk-11.0.2/lib/javafx.web.jar:/home/janik/Downloads/javafx-sdk-11.0.2/lib/javafx.base.jar:/home/janik/Downloads/javafx-sdk-11.0.2/lib/javafx.fxml.jar:/home/janik/Downloads/javafx-sdk-11.0.2/lib/javafx.media.jar:/home/janik/Downloads/javafx-sdk-11.0.2/lib/javafx.swing.jar:/home/janik/Downloads/javafx-sdk-11.0.2/lib/javafx.controls.jar:/home/janik/Downloads/javafx-sdk-11.0.2/lib/javafx.graphics.jar -p /home/janik/Downloads/javafx-sdk-11.0.2/lib/javafx.base.jar:/home/janik/Downloads/javafx-sdk-11.0.2/lib/javafx.graphics.jar GUI.Main
Exception in Application start method
java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:464)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:363)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1051)
Caused by: java.lang.RuntimeException: Exception in Application start method
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:900)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.IllegalAccessError: class com.sun.javafx.fxml.FXMLLoaderHelper (in unnamed module @0x2a0b1b6c) cannot access class com.sun.javafx.util.Utils (in module javafx.graphics) because module javafx.graphics does not export com.sun.javafx.util to unnamed module @0x2a0b1b6c
at com.sun.javafx.fxml.FXMLLoaderHelper.<clinit>(FXMLLoaderHelper.java:38)
at javafx.fxml.FXMLLoader.<clinit>(FXMLLoader.java:2056)
at GUI.Main.start(Main.java:26)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:846)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:455)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:428)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:427)
at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
at javafx.graphics/com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
at javafx.graphics/com.sun.glass.ui.gtk.GtkApplication.lambda$runLoop$11(GtkApplication.java:277)
... 1 more
Exception running application GUI.Main

Process finished with exit code 1

Dazu hab ich bis jetzt folgendes als Lösung probiert:
- Ich habe dem ganzen Projekt sowie dem JavaFX-JDK volle Rechte gegeben
- Ich habe einmal alles was mit Java zu tun hat gelöscht und neu installiert mit sudo apt install openjdk-8-jdk openjfx
- Ich habe wieder alles gelöscht was mit Java zu tun hat, hab sudo apt install openjdk-11-jdk installiert und über maven die depencies
Code:
<dependency>
    <groupId>org.openjfx</groupId>
    <artifactId>javafx-controls</artifactId>
    <version>11</version>
</dependency>
<dependency>
    <groupId>org.openjfx</groupId>
    <artifactId>javafx-fxml</artifactId>
    <version>11</version>
</dependency>
hinzugefügt

Aktueller Stand:
- Ich habe die dependencies auskommentiert und von der JavaFX Seite javafx-sdk-11.0.2 heruntergeladen und in mein Projekt importiert. (Das hat mich dann wieder zu der oben stehenden Fehlermeldung gebracht). Installiert ist aktuel OpenJDK 11.

Bin auch gerne Bereit auf OpenJDK 8 zu gehen, brauch nicht zwigend die 11er Version.

Jetzt bin ich leider etwas radlos was ich noch tun könnte?
Da ihr mir letztens schon helfen konntet, wollt ich einfach nochmal nachfragen, vielleicht kennt jemand die Lösung und könnte mir helfen.:)
 

Anhänge

  • Linux.png
    Linux.png
    47,2 KB · Aufrufe: 56
  • java.png
    java.png
    33,1 KB · Aufrufe: 75

mrBrown

Super-Moderator
Mitarbeiter
Afaik müsste das mit --add-modules javafx.fxml oder einem --add-exports=javafx.graphics/com.sun.javafx.util=ALL-UNNAMED als zusätzliches Argument möglich sein.

Du kannst auch die JavaFX-Version mal hochziehen auf 11.0.2, wenn möglich auch direkt auf 12.0.1
 

Lyreex

Aktives Mitglied
Afaik müsste das mit --add-modules javafx.fxml oder einem --add-exports=javafx.graphics/com.sun.javafx.util=ALL-UNNAMED als zusätzliches Argument möglich sein.

Du kannst auch die JavaFX-Version mal hochziehen auf 11.0.2, wenn möglich auch direkt auf 12.0.1

Danke für deine Antwort.
Ich geh davon aus, dass ich die Parameter unter VM Options eintragen muss.
Das kommt bei den jeweiligen Paramter raus:
--add-modules javafx.fxml
Error occurred during initialization of boot layer java lang.module.FindException: Module javafx.fxml not found
--add-exports=javafx.graphics/com.sun.javafx.util=ALL-UNNAMED
Exception in Application start method
java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:464)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:363)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1051)
Caused by: java.lang.RuntimeException: Exception in Application start method
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:900)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.IllegalAccessError: class javafx.fxml.FXMLLoader$ValueElement (in unnamed module @0x6bbdeef7) cannot access class com.sun.javafx.reflect.ReflectUtil (in module javafx.base) because module javafx.base does not export com.sun.javafx.reflect to unnamed module @0x6bbdeef7
at javafx.fxml.FXMLLoader$ValueElement.processAttribute(FXMLLoader.java:935)
at javafx.fxml.FXMLLoader$InstanceDeclarationElement.processAttribute(FXMLLoader.java:980)
at javafx.fxml.FXMLLoader$Element.processStartElement(FXMLLoader.java:227)
at javafx.fxml.FXMLLoader$ValueElement.processStartElement(FXMLLoader.java:752)
at javafx.fxml.FXMLLoader.processStartElement(FXMLLoader.java:2722)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2552)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2466)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3237)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3194)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3163)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3136)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3113)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:3106)
at GUI.Main.start(Main.java:26)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:846)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:455)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:428)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:427)
at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
at javafx.graphics/com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
at javafx.graphics/com.sun.glass.ui.gtk.GtkApplication.lambda$runLoop$11(GtkApplication.java:277)
... 1 more
Exception running application GUI.Main

Process finished with exit code 1

Aktuell ist die JavaFX-Verson 11.0.2 installiert.

Gibts vielleicht eine möglichkeit javafx sauber mit Maven einzubinden?
Ich hab das ja schon über die dependencies probiert, allerdings ohne Erfolg.
 

dzim

Top Contributor
@Lyreex versuchst du deine Applikation über eine IntelliJ-Runtime-Config zu starten? Das habe ich bei mir mit meinem migrierten Projekt auch irgendwie nie hinbekommen. Dagegen hat es mit einem exec-Goal mit Maven geklappt:

https://github.com/bgmf/poc/blob/master/simple-tests-fx/pom.xml

HTML:
<project>

    <!-- ... -->
    
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <release>11</release>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.6.0</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>java</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <mainClass>eu.dzim.tests.fx.${main.class}</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

Mit z.B. compile exec:java -Dmain.class=MainTableTest starte ich es dann.

Hinweis: Was bei mir auch noch auf der ToDo-Liste steht: Maven-Wrapper...
 

Lyreex

Aktives Mitglied
Danke @dzim für deine Antwort.

Ich hab die Plugins in meine Pom.xml importiert.
Gab leider als Ergebnis immer noch die gleiche Fehlermeldung.

Dann habe ich deinen Maven Code probiert, dort bekomme ich einen neuen Fehler.
/usr/lib/jvm/java-1.11.0-openjdk-amd64/bin/java -Dmaven.multiModuleProjectDirectory=/home/janik/IdeaProjects/FireSubscriber -Dmaven.home=/opt/idea-IC-191.6707.61/plugins/maven/lib/maven3 -Dclassworlds.conf=/opt/idea-IC-191.6707.61/plugins/maven/lib/maven3/bin/m2.conf -javaagent:/opt/idea-IC-191.6707.61/lib/idea_rt.jar=42179:/opt/idea-IC-191.6707.61/bin -Dfile.encoding=UTF-8 -classpath /opt/idea-IC-191.6707.61/plugins/maven/lib/maven3/boot/plexus-classworlds-2.5.2.jar org.codehaus.classworlds.Launcher -Didea.version2019.1.2 compile exec:java -Dmain.class=GUI.Main
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building FireNavi_Paho 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ FireNavi_Paho ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 4 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.0:compile (default-compile) @ FireNavi_Paho ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- exec-maven-plugin:1.6.0:java (default-cli) @ FireNavi_Paho ---
[WARNING]
java.lang.NoClassDefFoundError: javafx/application/Application
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:174)
at java.base/java.net.URLClassLoader.defineClass(URLClassLoader.java:550)
at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:458)
at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:452)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:451)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:588)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:270)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.ClassNotFoundException: javafx.application.Application
at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:471)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:588)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 12 more
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.358 s
[INFO] Finished at: 2019-05-14T14:03:30+02:00
[INFO] Final Memory: 10M/44M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.6.0:java (default-cli) on project FireNavi_Paho: An exception occured while executing the Java class. javafx/application/Application: javafx.application.Application -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

Process finished with exit code 1

Wenn ich ehrlich bin, bin ich etwas überfragt was genau der Fehler mir mitteilen will außer das er die "NoClassFoundErrorException" wirft.
Intressanter weiße ist aber nix rot unterstrichen in meinem Code.
 

Lyreex

Aktives Mitglied
Wie kann ich das den rausfinden?

Kann das auch damit zusammenhängen, dass ich mit Maven das Projekt nicht bauen kann? Da bekomm ich auch eine menge Fehlermeldungen. Kann die auch gerne mal hier Posten.
 

Lyreex

Aktives Mitglied
Achso.
Das kommt dabei raus:

java version "11.0.2" 2019-01-15 LTS Java(TM) SE Runtime Environment 18.9 (build 11.0.2+9-LTS) Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.2+9-LTS, mixed mode)
 

dzim

Top Contributor
Soweit so gut. Ferndiagnose wird jetzt schwer. Kann dir nur sagen, dass es bei mir mit Ubuntu 18.04, 18.10 und nun 19.04 und AdoptOpenJDK und Maven gut klappt... Ich kann mich irren, aber mich dünkt, meine Kommandozeile ist auch nicht so lang, wie deine - ich checke das später mal.
 
K

kneitzel

Gast
Achso.
Das kommt dabei raus:

java version "11.0.2" 2019-01-15 LTS Java(TM) SE Runtime Environment 18.9 (build 11.0.2+9-LTS) Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.2+9-LTS, mixed mode)
Ist das denn auch das Java, dass das openJFX mit drin hat?

Sprich: Du nutzt das openjdk und openjfx paket von Ubuntu? (die hoffentlich genau so aufgebaut sind wie bei debian)...

Was ich im Augenblick nicht verstehe: Das openjfx 11 installiert sich in ein eigenes Verzeichnis (/usr/share/openjfx/lib/)
Bei der 8ter Version hat sich das noch mit in der JRE integriert (/usr/lib/jvm/java-8-openjdk-amd64/)

Aber das sind auch nur die Pakete, die ich bei Debian sehe. Ubuntu scheint die aber auch zu nutzen. openjfx paket bei stretch ist das 8ter und bei sid ist es das 11er. Wenn es bei Ubuntu dieses Paket von Debian sein sollte (Diverse Threads lassen mich darauf schließen), dann kannst Du dir einmal /usr/share/doc/openjfx/TODO.Debian ansehen.

Sollte es aber so sein, dass das openjfx in einem anderen Verzeichnis ist, dann müsstest Du bei java und javac Aufrufen noch den openjfx Path als module path angeben (--module-path $PATH_TO_FX)

So Du alles per ubuntu Paketmanager installiert hast, kannst Du das auch schnell erkennen:
dpkg-query -L openjfx
Das sollte dir alle openjfx Dateien auflisten.

Generell gefällt mir das nicht wirklich. Ich habe bei meiner Linux Kiste ein openjdk mit integriertem openjfx und das nutze ich über path / JAVA_HOME Einträge (Ich nutze also nicht die alternative Methodik unter Linux für die Auswahl der Java Version).
Das ist aber auch nur wichtig, so weit wie Du Dinge auf Kommandozeile machst. Eclipse / IntelliJ bieten ja bei Projekten an, das gewünschte JRE/JDK zu spezifizieren.
 
K

kneitzel

Gast
Ach so - paar Ergänzungen:
- Ubuntu basiert mit auf Debian. Gleiches Paketformat und so. Daher sind hier die Pakete oft gleich. Klar: Warum sollte man sich doppelt arbeit machen?
- "stretch" / "sid": Das sind Versionsnamen. "sid" ist generell der Name der Unstable Distribution, in der neue Versionen getestet werden. "stretch" ist Debian 9, war also lange die "testing" Version, ehe Debian 9 offiziell heraus gekommen ist und dann Debian 10 (buster) das neue "testing" wurde.
Ich hoffe, der Rest war nicht zu kryptisch.

Und Hintergrund ist: Die Application Klasse kann er natürlich nicht finden, wenn das javaFX in einem anderen Verzeichnis ist. Das könnte also die Fehlermeldung erklären.

Aber ich sehe auch gerade: Ich bin etwas auf dem Holzweg, da Du das javaFX ja über Maven hinzu gefügt hast....
 

dzim

Top Contributor
@kneitzel guter Tipp - ich wusste nicht mal, dass das OpenJFX-Paket jetzt auch bei 11.0.2 angekommen ist... Ich verwende es halt entweder als DL des SDKs, oder eben als Maven-Dependency.
 
K

kneitzel

Gast
Ja aber ich habe leider zu spät erkannt, dass es für Dich nicht wirklich hilfreich ist, denn Du gehst ja den "Maven Dependency Weg", der eben auch funktionieren sollte! Daher waren meine Beiträge wohl nicht wirklich hilfreich ...

Ich selbst habe mit javaFX bisher nicht besonders viel gemacht. Nur paar Tests und Spielereien um etwas mitreden zu können. Ich entwickle sonst eigentlich mehr serverseitig und habe daher nicht so viele Erfahrungen. Und das Meiste habe ich immer per JDK mit openjfx fertig drin gemacht.
 

Lyreex

Aktives Mitglied
Wie sieht denn mittlerweile deine pom.xml aus?

Die sieht mittlerweile so aus:
XML:
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>de.hinsberger</groupId>
    <artifactId>FireNavi_Paho</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>

        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-controls</artifactId>
            <version>11</version>
        </dependency>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-fxml</artifactId>
            <version>11</version>
        </dependency>

        <dependency>
            <groupId>org.eclipse.paho</groupId>
            <artifactId>org.eclipse.paho.client.mqttv3</artifactId>
            <version>1.0.2</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/log4j/log4j -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.6</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.miglayout/miglayout -->
        <dependency>
            <groupId>com.miglayout</groupId>
            <artifactId>miglayout</artifactId>
            <version>3.7.4</version>
        </dependency>


        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.5</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>

    </dependencies>

    <repositories>
        <repository>
            <id>Eclipse Paho Repo</id>
            <url>https://repo.eclipse.org/content/repositories/paho-releases/</url>
        </repository>
    </repositories>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <mainClass>com.pg.fxapplication.Main</mainClass>
                        </manifest>
                        <manifestEntries>
                            <Class-Path>.</Class-Path>
                        </manifestEntries>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>8</source>
                    <target>8</target>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <finalName>FireNaviClient</finalName>
                    <appendAssemblyId>false</appendAssemblyId>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <archive>
                        <manifest>
                            <mainClass>GUI.Main</mainClass>
                        </manifest>
                    </archive>
                </configuration>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>attached</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

Ach so - paar Ergänzungen:
- Ubuntu basiert mit auf Debian. Gleiches Paketformat und so. Daher sind hier die Pakete oft gleich. Klar: Warum sollte man sich doppelt arbeit machen?
- "stretch" / "sid": Das sind Versionsnamen. "sid" ist generell der Name der Unstable Distribution, in der neue Versionen getestet werden. "stretch" ist Debian 9, war also lange die "testing" Version, ehe Debian 9 offiziell heraus gekommen ist und dann Debian 10 (buster) das neue "testing" wurde.
Ich hoffe, der Rest war nicht zu kryptisch.

Und Hintergrund ist: Die Application Klasse kann er natürlich nicht finden, wenn das javaFX in einem anderen Verzeichnis ist. Das könnte also die Fehlermeldung erklären.

Aber ich sehe auch gerade: Ich bin etwas auf dem Holzweg, da Du das javaFX ja über Maven hinzu gefügt hast....
Erst mal danke für deine ausführliche Antwort!
Genau, der Fehler liegt darin das die Application Klasse nicht finden kann, da JavaFX in einem anderen Verzeichnis liegt.
Daher funktioniert das ganze auf meinem Windows Rechner, weil da alles in einem Paket liegt.

In IntelliJ kann ich jetzt die Main starten mit folgenden VM Options:
--module-path /usr/lib/jvm/javafx-sdk-13/lib --add-modules=javafx.controls,javafx.fxml

Aber das bringt mir nix, da das ganze später auch ohne IntelliJ laufen soll.

Gibt es vielleicht ein Problem, dass ich JavaFX auch in meine pom.xml eingebunden habe?
Sollte ich dort die dependency löschen oder eher das Verzeichnis /usr/lib/jvm/javafx-sdk-13

Muss ich noch was einstellen um ihm zu sagen, dass er die Maven dependency als JavaFX nehmen soll?
 
Zuletzt bearbeitet von einem Moderator:

Lyreex

Aktives Mitglied
Was hat es den so mit der Fehlermeldung:
Caused by: java.lang.IllegalAccessError: class com.sun.javafx.fxml.FXMLLoaderHelper (in unnamed module @0x6d8d22e7) cannot access class com.sun.javafx.util.Utils (in module javafx.graphics) because module javafx.graphics does not export com.sun.javafx.util to unnamed module @0x6d8d22e7
auf sich? Er sagt mir ja das er irgendwie die Klasse nicht findet bzw. kein Zugriff darauf hat. Aber in IntelliJ hat er alle Importe gefunden?

Noch ein kurzes Update:
Ich hab in IntelliJ unter File > Project Structure > Modules die JavaFX Abhängigkeit vom Filesystem gelöscht, so dass er jetzt die JavaFX Dependency von Maven benutzt.
 

mrBrown

Super-Moderator
Mitarbeiter
Bei mir läuft es mit Maven und IntelliJ:

Java ist OpenJDK 11 ohne JavaFX, JavaFX ist auch nicht zusätzlich installiert.
pom.xml entspricht deiner, bis auf das Anpassen der main-Klasse.

Zusätzlich zu der bestehenden main ist eine neue main-Klasse hinzugefügt, die nichts anderes macht, als die bestehende main aufzurufen. Das ganze vehindert, das man direkt direkt das Modul-System nutzen möchte (macht es dabei mMn einfacher).


Zusätzliche Main:
Java:
package GUI;
public class StartableMain {
    public static void main(String[] args) {
        GUI.Main.main(args);
    }
}


Build-Section in der pom.xml
XML:
<build>
    <plugins>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.0</version>
            <configuration>
                <release>11</release>
            </configuration>
        </plugin>

        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <finalName>FireNaviClient</finalName>
                <appendAssemblyId>false</appendAssemblyId>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
                <archive>
                    <manifest>
                        <mainClass>GUI.StartableMain</mainClass>
                    </manifest>
                </archive>
            </configuration>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>attached</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
 

dzim

Top Contributor
@mrBrown Und warum ist das doppelt verpackte jetzt überhaupt notwendig? Ich starte über das Mojohouse Plugin https://github.com/mojohaus/exec-maven-plugin - und da geht es von Maven aus.
#edit2 Wer lesen kann ist klar im Vorteil... Sorry, hab deine Erklärung überlesen.

Offtopic: Übrigens gibt es auch OpenJDKs mit gebundelten JavaFX: https://www.azul.com/downloads/zulu/zulufx/

Die Zeile
--module-path /usr/lib/jvm/javafx-sdk-13/lib --add-modules=javafx.controls,javafx.fxml
könnte dann sinnvoll werden wenn du das Projekt als bundle verteilen möchtest...

@mrBrown hast du das schon mal mit dem Backport vom jpackager versucht? Ich habe das bisher noch nicht zum laufen gebracht - aber es auch nicht allzu intensiv weiter probiert...
#edit Das ist natürlich nur mit den alten JDKs (<13) relevant...
 

mrBrown

Super-Moderator
Mitarbeiter
@mrBrown Und warum ist das doppelt verpackte jetzt überhaupt notwendig? Ich starte über das Mojohouse Plugin https://github.com/mojohaus/exec-maven-plugin - und da geht es von Maven aus
Welches doppelt-verpackte meinst du?
Bei mir kommt am Ende eine fat-jar ohne externe Abhängigkeiten raus.


@mrBrown hast du das schon mal mit dem Backport vom jpackager versucht? Ich habe das bisher noch nicht zum laufen gebracht - aber es auch nicht allzu intensiv weiter probiert...
#edit Das ist natürlich nur mit den alten JDKs (<13) relevant...
Bisher noch nicht, aktuell muss man das mit Java 11 auch noch per Hand installieren, oder geht das mittlerweile rein über Maven?
 

Lyreex

Aktives Mitglied
Bei mir läuft es mit Maven und IntelliJ:

Java ist OpenJDK 11 ohne JavaFX, JavaFX ist auch nicht zusätzlich installiert.
pom.xml entspricht deiner, bis auf das Anpassen der main-Klasse.

Zusätzlich zu der bestehenden main ist eine neue main-Klasse hinzugefügt, die nichts anderes macht, als die bestehende main aufzurufen. Das ganze vehindert, das man direkt direkt das Modul-System nutzen möchte (macht es dabei mMn einfacher).


Zusätzliche Main:
Java:
package GUI;
public class StartableMain {
    public static void main(String[] args) {
        GUI.Main.main(args);
    }
}


Build-Section in der pom.xml
XML:
<build>
    <plugins>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.0</version>
            <configuration>
                <release>11</release>
            </configuration>
        </plugin>

        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <finalName>FireNaviClient</finalName>
                <appendAssemblyId>false</appendAssemblyId>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
                <archive>
                    <manifest>
                        <mainClass>GUI.StartableMain</mainClass>
                    </manifest>
                </archive>
            </configuration>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>attached</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

Es hat geklappt!
Viele Dank! Auch an die anderen Mitglieder!

Als kurze Zusammenfassung:
Ich habe OpenJDK installiert über sudo apt-get install openjdk-8-*.
Dann habe ich die Abhängigkeiten von JavaFX in meiner POM hinzugefügt.
Die POM mit der Antwort von @mrBrown ergänzt, aus dem Beispiel auch die zusätzliche Main erstellt und dann hats geklappt.


Jetzt hab ich da doch noch eine Frage, weil ich das nicht so ganz verstanden hab:
Die StartableMain ist jetzt zwingend notwendig oder gibt es auch die Möglichkeit alles über eine Main laufen zu lassen? Könnte ja den Einzeiler auch einfach in meine vorherige Main einfügen oder?
 

dzim

Top Contributor
Welches doppelt-verpackte meinst du?
Es gab noch einen zweiten Edit - hatte deine Erklärung übersehen...

Zum JDK. Nein, gibt es nicht als Maven-Packet - das wäre wohl overkill.

Aber es gibt das Tool jpackage (JEP 343: Packagin Tool) und mit dem VocabHunter gibt es ein Tool, dass hier recht früh mal versucht hat zu zeigen, wie man ein Custom JDK mit JavaFX anhand eines Gradle-Builds machen kann - ist aber recht kompliziert.
Etwas später hat Gluon, die sich ja stark um JavaFX (und openjfx.io) bemühen, auch noch ein paar Gradle- und Maven-Plugins vorgestellt.
https://gluonhq.com/plugins-to-ease-the-work-with-javafx-11/
-> https://github.com/openjfx/javafx-maven-plugin/
-> https://github.com/openjfx/javafx-gradle-plugin

https://github.com/javafxports/openjdk-jfx/issues/238

https://github.com/brunoborges/javafx-jlink-starter-gradle
https://github.com/brunoborges/maven-javafx-archetype

https://github.com/beryx/badass-jlink-plugin (Gradle)
https://github.com/agilhard-oss/jlink-jpackager-maven-plugin

Das ist so alles, was mir zu dem Thema soweit bekannt ist... Wie gesagt: Habe mich damit bisher noch nicht so viel beschäftigen wollen... :eek::D
 

mrBrown

Super-Moderator
Mitarbeiter
Jetzt hab ich da doch noch eine Frage, weil ich das nicht so ganz verstanden hab:
Die StartableMain ist jetzt zwingend notwendig oder gibt es auch die Möglichkeit alles über eine Main laufen zu lassen? Könnte ja den Einzeiler auch einfach in meine vorherige Main einfügen oder?
Mit Java 11 ist das nötig, wenn man nicht das Modulsystem nutzen will, dazu darf die zuerst ausgeführte Main-Methode nicht in einer Klasse sein, die Application extendet
 

Lyreex

Aktives Mitglied
Mit Java 11 ist das nötig, wenn man nicht das Modulsystem nutzen will, dazu darf die zuerst ausgeführte Main-Methode nicht in einer Klasse sein, die Application extendet
Achso okay. Dann lass ich den Aufbau jetzt einfach so. Das passt :)

Ich bekomme allerdings eine neue Fehlermeldung bzw. Warning.
(java:6173): Gdk-WARNING **: 14:51:36.298: XSetErrorHandler() called with a GDK error trap pushed. Don't do that.
Sollte ich mir deswegen Sorgen machen?

Es läuft trotzdem alles, ich bin nur etwas verwirrt.
 

mrBrown

Super-Moderator
Mitarbeiter
Sorgen brauchst du dir nicht machen, afaik gibts dazu schon ein offenes Ticket und das wird sicher in einer späteren Version auch beseitigt
 

dzim

Top Contributor
Mit Java 11 ist das nötig, wenn man nicht das Modulsystem nutzen will, dazu darf die zuerst ausgeführte Main-Methode nicht in einer Klasse sein, die Application extendet
Bin ich ja beruhigt. In richtigen Applikationen mache ich das nämlich eh nie... ;)

Meine nur den jpackager ;)

Das letzte mal, als ich mir das angeguckt hab, musste der für Java 11 im System installiert werden (wenn ich das richtig im Kopf hab...)
Ja, das ist bis Java 12 immer noch so. In Java 13 soll er wohl angeblich enthalten sein:
This is an early access build of JEP 343: Packaging Tool, aimed at testing a prototype implementation of jpackage, which is a new tool for packaging self-contained Java applications along with a Java Runtime Environment.

This build is intended for developers interested in jpackage, and is provided as a convenience so that they don't need to build from the source code (branch="JDK-8200758-branch").

Warning: This build is based on an incomplete version of JDK 13.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Problem mit der Anzeige von jLabel. Unlesbar wenn der Text geändert wird. AWT, Swing, JavaFX & SWT 28
H 2D-Grafik Problem mit Paint AWT, Swing, JavaFX & SWT 1
S Layout - Problem AWT, Swing, JavaFX & SWT 1
Tassos JavaFX/Problem mit der Maussteuerung in Stackpane AWT, Swing, JavaFX & SWT 7
sserio Java Fx - Problem AWT, Swing, JavaFX & SWT 3
A Problem Spiel auf Panel der GUI zu bringen AWT, Swing, JavaFX & SWT 1
A JavaFX Controller Problem AWT, Swing, JavaFX & SWT 1
TheWhiteShadow JavaFX ListView Problem beim Entfernen von Elementen AWT, Swing, JavaFX & SWT 1
E LayoutManager Welcher Layout-Mix löst mein Problem? AWT, Swing, JavaFX & SWT 3
Umb3rus JavaFX Problem mit PropertyValueFactory: can not read from unreadable property AWT, Swing, JavaFX & SWT 1
T Problem mit paintComponent() AWT, Swing, JavaFX & SWT 17
AmsananKING Java Menü-Problem AWT, Swing, JavaFX & SWT 1
K JavaFX Resizing-Problem beim BorderLayout (Center Component) beim Arbeiten mit mehreren FXMLs AWT, Swing, JavaFX & SWT 2
G Instance OF Problem AWT, Swing, JavaFX & SWT 9
FrittenFritze Ein Problem mit der CSSBox, die Größe wird nicht angepasst AWT, Swing, JavaFX & SWT 5
M Problem mit dem Anzeigen von Frames im Vordergrund AWT, Swing, JavaFX & SWT 5
Badebay Problem mit JButton AWT, Swing, JavaFX & SWT 2
newJavaGeek Grid-Layout problem AWT, Swing, JavaFX & SWT 7
J JavaFX Löschen im Tabelview macht Problem AWT, Swing, JavaFX & SWT 15
JavaTalksToMe JavaFx ExekutorService Problem AWT, Swing, JavaFX & SWT 2
Zrebna Problem bei Eventhandling (Value soll nach jedem erneutem Klick gelöscht werden) AWT, Swing, JavaFX & SWT 4
B Problem mit JavaFX AWT, Swing, JavaFX & SWT 5
J css Problem AWT, Swing, JavaFX & SWT 5
B JavaFX habe mein Problem fett markiert AWT, Swing, JavaFX & SWT 2
A Swing Filter-Problem AWT, Swing, JavaFX & SWT 1
temi JavaFX Problem mit IntelliJ und JavaFx 11 unter XUbuntu AWT, Swing, JavaFX & SWT 3
H JTable TableCellEditor-Problem AWT, Swing, JavaFX & SWT 0
kodela Swing Problem mit Warten-Dialog AWT, Swing, JavaFX & SWT 16
B JavaFx Scene Builder Problem AWT, Swing, JavaFX & SWT 2
B [Problem] Java öffnet Word-Datein nicht AWT, Swing, JavaFX & SWT 14
T DataBinding Problem AWT, Swing, JavaFX & SWT 5
Blender3D Problem mit € Symbol Font Gotham Windows 10 Swing AWT, Swing, JavaFX & SWT 11
T Problem mit JTable Sortierung AWT, Swing, JavaFX & SWT 2
J Problem mit Platfrom run later AWT, Swing, JavaFX & SWT 15
J Problem mit Platfrom run later AWT, Swing, JavaFX & SWT 0
D Swing SwingUtils / Thread Problem AWT, Swing, JavaFX & SWT 3
L JavaFX Problem beim Aufrufen einer Methode AWT, Swing, JavaFX & SWT 5
T Swing Problem mit Datum und FormattedTextField AWT, Swing, JavaFX & SWT 2
S AWT Java print dialog Problem AWT, Swing, JavaFX & SWT 0
olfibits JavaFX Problem mit HTMLEditor AWT, Swing, JavaFX & SWT 0
W SWT hover-background-problem with first column in TreeViewer AWT, Swing, JavaFX & SWT 0
M Problem mit Add JScrollPane AWT, Swing, JavaFX & SWT 25
Mario1409 Swing JTextArea scroll Problem AWT, Swing, JavaFX & SWT 0
N Swing Problem mit loop AWT, Swing, JavaFX & SWT 2
S Swing Problem mit Button und ActionListener AWT, Swing, JavaFX & SWT 5
S Swing & Clean und build Problem AWT, Swing, JavaFX & SWT 12
S JLabel setText() Problem AWT, Swing, JavaFX & SWT 6
I 2D-Grafik Problem beim Ändern der Farbe eine 2d Objekts AWT, Swing, JavaFX & SWT 3
G Swing Splitpane Problem AWT, Swing, JavaFX & SWT 1
F Problem mit der FXML Rectangle Shape AWT, Swing, JavaFX & SWT 2
N JavaFX Stranges Problem mit der Autoscroll-Eigenschaft von Textareas AWT, Swing, JavaFX & SWT 0
E Java FX FXML Problem mit html Scriptausführung AWT, Swing, JavaFX & SWT 2
J JavaFX Intersect Problem mit Shapes AWT, Swing, JavaFX & SWT 10
R JavaFX MediaPlayer AVI-Problem AWT, Swing, JavaFX & SWT 1
M Swing Problem mit ListCellRenderer AWT, Swing, JavaFX & SWT 7
D Problem mit JTable AWT, Swing, JavaFX & SWT 1
F GUI Auflösung ändern - Koordianten und Proportions Problem AWT, Swing, JavaFX & SWT 21
J Problem mit Button darstellung AWT, Swing, JavaFX & SWT 23
M Problem mit Layoutmanagern... Hilfe wäre sehr nett. AWT, Swing, JavaFX & SWT 2
S 2D-Grafik Problem mit Variablen AWT, Swing, JavaFX & SWT 4
7 JavaFX Problem beim Zeichnen eines Dreiecks in einem GUI AWT, Swing, JavaFX & SWT 6
M Swing AttributiveCellTableModel addRow() Problem AWT, Swing, JavaFX & SWT 1
J Swing Problem mit Graphics Methode AWT, Swing, JavaFX & SWT 4
N JavaFX Problem mit table multiple selection AWT, Swing, JavaFX & SWT 5
K CheckBox Problem AWT, Swing, JavaFX & SWT 5
Grevak DisplayMode Problem seit Windows 10 AWT, Swing, JavaFX & SWT 2
S Swing Eigene JComboBox Problem! AWT, Swing, JavaFX & SWT 1
B Swing Problem mit Bildpfad AWT, Swing, JavaFX & SWT 4
N Swing Problem beim Scrollen mit JScrollPane AWT, Swing, JavaFX & SWT 6
V Graphics g - drawOval problem mit background AWT, Swing, JavaFX & SWT 1
C AWT Problem mit Protokol Fenster AWT, Swing, JavaFX & SWT 0
M Swing pack() Problem mit Taskleiste AWT, Swing, JavaFX & SWT 4
N Swing Choice- Problem! AWT, Swing, JavaFX & SWT 8
Q "AWT-EventQueue-0" Exception Problem AWT, Swing, JavaFX & SWT 4
D jButton Problem, ein Rieser Button bedeckt das ganze frame AWT, Swing, JavaFX & SWT 1
A Problem: repaint() - Schleife AWT, Swing, JavaFX & SWT 3
J Anfänger GUI Problem bei der Ausführung eines sehr einfachen Programms AWT, Swing, JavaFX & SWT 2
P AWT Problem mit Platzierung (GridBagLayout) AWT, Swing, JavaFX & SWT 2
N Swing JTree Problem beim erstellen der Knoten AWT, Swing, JavaFX & SWT 0
N Swing CardLayout: Problem beim Wechsel zwischen den JPanels AWT, Swing, JavaFX & SWT 3
A Mini-Menu-Schriften. Ein Problem bei hohen DPI Zahlen AWT, Swing, JavaFX & SWT 2
Z Canvas in Frame einfügen. Problem mit 4-Gewinnt AWT, Swing, JavaFX & SWT 1
C Thread-/ Simulations- Problem AWT, Swing, JavaFX & SWT 18
G Swing Setvisible problem AWT, Swing, JavaFX & SWT 1
J JTabbedPane: close Button Problem AWT, Swing, JavaFX & SWT 2
Tom299 JavaFX -> fxmlLoader -> getResourceAsStream Problem AWT, Swing, JavaFX & SWT 1
T Problem: ComboBox und addItem AWT, Swing, JavaFX & SWT 5
M JTextArea wird nicht aktualisiert (ActionListener-Problem) AWT, Swing, JavaFX & SWT 1
T LayoutManager LookAndFeel-Problem AWT, Swing, JavaFX & SWT 4
F Problem mit Implementierung von Kollisionsabfrage AWT, Swing, JavaFX & SWT 5
vodkaz (javafx) Image Problem AWT, Swing, JavaFX & SWT 2
T Problem beim Zeichnen von Rechteck AWT, Swing, JavaFX & SWT 3
B JavaFX Problem bei Kamera / Group, gesamte Scene bewegt sich mit AWT, Swing, JavaFX & SWT 0
L Swing Vier Gewinnt Problem AWT, Swing, JavaFX & SWT 2
Z GUI-Problem, finde meinen Fehler nicht! AWT, Swing, JavaFX & SWT 11
B JavaFX KeyEvent und Canvas draw Problem AWT, Swing, JavaFX & SWT 9
R Swing Problem: IOException bei ActionListener AWT, Swing, JavaFX & SWT 1
GianaSisters JFrame mit JInternalFrames, Keylistener-Problem AWT, Swing, JavaFX & SWT 9
Q JList Update Problem AWT, Swing, JavaFX & SWT 1
A Problem mit drawImage AWT, Swing, JavaFX & SWT 1

Ähnliche Java Themen

Neue Themen


Oben