einfaches Fenster öffnen scheitert

OZAN86

Mitglied
Hallo schönen Abend bei mir scheitert es schon an einem einfachen Fenster, obwohl ich alle libraries eingebunden habe.

könntet ihr mal schauen was ich anders machen kann damit es läuft?!

danke schon mal!!
Java:
package youtube.fx;

import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.control.Label;

public class Youtubefx extends Application {

    public static void main(String[] args) {
        launch(args);

    }

    @Override
    public void start(Stage stage) throws Exception {
        Label hello = new Label ("hello JavaFX");
        Scene scene = new Scene(hello, 300, 300);
        stage.setScene(scene);
        stage.show();
        
    }

}

Java:
module youtubeFX {
    requires java.desktop;
    requires javafx.controls;
    requires javafx.graphics;
    requires javafx.base;
    
    opens youtube.fx to javafx.base, javafx.controls, javafx.graphics;
}
 
Y

yfons123

Gast
rechtsklick neues JavaProjekt
unbedingt mit module info erzeugen
dann rechtsklick auf das fertige projekt -> configure -> add maven nature

dann schaust du in die erzeugte datei die "pom.xml" heißt und fügst das da ein


Java:

XML:
<properties>
<java.version>17</java.version>
<javafx.version>${java.version}</javafx.version>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.openjfx/javafx-controls -->
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>${javafx.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.openjfx/javafx-graphics -->
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-graphics</artifactId>
<version>${javafx.version}</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-base</artifactId>
<version>${javafx.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.openjfx/javafx-web -->
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-web</artifactId>
<version>${javafx.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.openjfx/javafx-fxml -->
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-fxml</artifactId>
<version>${javafx.version}</version>
</dependency>
</dependencies>
ungefähr ist die stelle da ->

Java:
Code:
           <project>
// das generierte zeug ...

// hier einfügen in der zeile zwischen der letzten generierten zeile und bevor project schließ tag
</project>

dann auf module info klicken
und diese zeile einfügen

requires javafx.graphics;

die requires sachen werden dir später dann eh vorgeschlagen von eclipse ... efxclipse kannst du in der pfeife rauchen
deine main klasse die du dir erstellst, musst du als "exports DEINEMAINKLASSE;" ... halt da den klassennamen einsetzen
 
Y

yfons123

Gast
das ganze ist der bessere weg ein javafx projekt anzulegen.. buildpath zu nutzen ist zum kotzen und nicht modern und schwer
 

KonradN

Super-Moderator
Mitarbeiter
Generell ein paar Bemerkungen von meiner Seite:

1. Es gibt eine super Dokumentation: Getting Started auf openjfx.io: https://openjfx.io/openjfx-docs/ - Wenn, dann sollte man dem folgen. Dort findet man neben den generellen Grundlagen auch Informationen, wie ein Projekt einzurichten ist.

2. Ich würde generell empfehlen, auf Maven oder Gradle zu setzen und keine reinen Eclipse Projekte zu machen. Die vielen diversen Gründe dafür werde ich hier nicht erneut im Detail erläutern.

3. Dieses "opens" in der module-info.java
das gehört da gar nicht rein ( ich weis nicht was das to macht )
ist eine Aussage, die ich nicht nachvollziehen kann. Keine Ahnung, was es macht, aber es gehört da nicht rein?
Mit opens wird der Namespace des Modules für deep reflection geöffnet. Dies ist für gewisse Zugriffe per Reflection notwwendig. Ein Beispiel ist der FXMLLoader, der den Controller erzeugt und auswertet. Daher ist so eine opens Anweisung spätestens dann notwendig, wenn per FXMLLoader eine fxml mit eingetragenem Controller geladen wird. (Ich gebe aber in der Regel generell frei und nicht nur für spezifische Module. Also jedes exports bekommt bei mir sogar ein opens.
 

OZAN86

Mitglied
Gut zu wissen danke noch eine Frage in dem Sample im GitHub ide eclipse auswähle erscheint eine Auswahl mit modular und non modular ist das wichtig für mich? Wenn ich rein schauen sehen beide identisch aus!?
 

KonradN

Super-Moderator
Mitarbeiter
Da ist der Unterschied, ob man eine module-info.java Datei hat oder nicht. Das ist das Modulsystem von Java, das eingeführt wurde mit Java 9. Ohne diese Datei hast Du ein "unnamed Modul", für das es paar spezielle Regeln gibt. Wenn Du auch mit fxml Dateien arbeiten willst, dann kann es Sinn machen, mit module-info.java Datei zu arbeiten, auch wenn Du dann explizit andere Module einbinden musst. (Darüber wäre das Öffnen Deines Moduls für andere Module einfach möglich).
 

OZAN86

Mitglied
hier mein pom
Code:
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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>FXtest</groupId>
  <artifactId>FXtest</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <build>
    <sourceDirectory>src</sourceDirectory>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
          <release>15</release>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <properties>
<java.version>17</java.version>
<javafx.version>${java.version}</javafx.version>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.openjfx/javafx-controls -->
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>${javafx.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.openjfx/javafx-graphics -->
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-graphics</artifactId>
<version>${javafx.version}</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-base</artifactId>
<version>${javafx.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.openjfx/javafx-web -->
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-web</artifactId>
<version>${javafx.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.openjfx/javafx-fxml -->
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-fxml</artifactId>
<version>${javafx.version}</version>
</dependency>
</dependencies>
</project>
 
Y

yfons123

Gast
wenn eclipse nicht an der pom nörgelt und die pakete in deinem "maven dependencies" ordner im projekt liegen ( an dem erstmal selber nicht rum wurschteln ) hast du nur das exports noch verbeutelt
 

KonradN

Super-Moderator
Mitarbeiter
Das fehlerhafte exports wurde von @yfons123 richtig erkannt und aufgezeigt. Da werden namespaces angegeben und der Namespace ist bei Dir fxtests.

Was mir im Augenblick etwas auffällt (Was für den Start der Applikation aus der IDE aber vermutlich uninteressant ist):

a) Maven hat ein Grundsatz: "Convention over configuration". Es gibt also sehr viele "Conventions", also Abkommen, wie etwas gemacht werden sollte. Dadurch verringert sich die Konfiguration, die benötigt wird. Und das bringt den großen Vorteil, dass man Konfigurationsteile meist sehr gut kopieren und sehr einfach anpassen kann. Da sollte man nicht von abweichen, so es nicht notwendig ist.
Bei Dir ist mir das <sourceDirectory>src</sourceDirectory> diesbezüglich aufgefallen. Das sollte weg und statt dessen solltest DU Deinen Code in src/main/java/ verschieben.
Problematisch kann es werden, wenn Du dann später auch noch fxml Dateien oder andere Ressourcen hinzufügen willst. Die müssen bei Dir weiterhin unter src/main/resources. Das kann man auch umsetzen auf src aber dann müsste man auch noch ein Exclude für alle *.java Dateien machen. (Eclipse kann für Eclipse Projekte eine POM erstellen - da hat man sowas dann. Aber das ist alles andere als gut und ich würde jedem am Anfang raten, sich an die Abkommen zu halten.

b) Du hast kein default Encoding gesetzt. Das gibt zumindest Warnungen und kann auch zu Problemen führen. Es ist anzuraten, immer das Encoding der Dateien zu setzen. In den Properties wäre dies ein Eintrag wie <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

c) Bei JavaFX mit Java >8 gibt es einige Änderungen, die wichtig sind. Über eine bist Du schon gestolpert: Module. Die andere ist, dass die runnable Jar eigentlich durch ein JLink (und ab 14 erweitert um JPackage) ersetzt wurde. Es wird dabei ein Verzeichnis erzeugt, das alles enthält, das man zur Ausführung braucht. Das kann bei JavaFX mit dem openjfx Plugin erfolgen. Das hast Du aber noch nicht eingebunden.

Du hast als Entwicklungsumgebung zwar Eclipse im Einsatz aber Dein Projekt ist ein Maven Projekt. Daher solltest Du in der genannten Dokumentation rein der Maven Dokumentation folgen und da findest Du dann auch, wie das Plugin eingebunden werden soll. Eclipse sollte dann rein mit dem Maven Projekt arbeiten, d.h. Du musst da keinerlei separaten Dinge einbinden. Das Maven Projekt alleine reicht voll und ganz. Der Start des Programmes läuft dann z.B. auch über ein maven Befehl: mvn javafx:run

An der stelle nur ein kleiner Hinweis: Wenn Du irgendwann einmal Abhängigkeiten nutzen willst, die ohne Modulbeschreibung daher kommen, dann hat dieser Ansatz leider Grenzen. Da wird das openjfx Plugin ersetzt durch andere Plugins, aber das bringt einiges an Komplexität mit, so dass ich das an dieser Stelle erst einmal ignorieren würde. Da sollte es nur der Hinweis sein, dass dann meist auf das moditect Plugin zurückgegriffen wird. Da würde Dir - sollte da jemals der Bedarf aufkommen - dir jemand hier im Forum eine POM zu bauen können.

Das einfach nur als ein paar kleine Anmerkungen von meiner Seite.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Einfaches Fenster "ordentlich" darstellen AWT, Swing, JavaFX & SWT 8
P Swing Empfehlungen für einfaches Computerspiel AWT, Swing, JavaFX & SWT 4
J JavaFX JavaFX Canvas einfaches Zeichenprogramm AWT, Swing, JavaFX & SWT 7
J GUI Anfänger einfaches Program AWT, Swing, JavaFX & SWT AWT, Swing, JavaFX & SWT 3
T Einfaches Problem mit ActionListener AWT, Swing, JavaFX & SWT 2
P Einfaches GUI läuft nicht AWT, Swing, JavaFX & SWT 6
E Einfaches Quadrat zeichnen AWT, Swing, JavaFX & SWT 6
T 2D-Grafik Tutorial für ein einfaches Zeichenprogramm! AWT, Swing, JavaFX & SWT 2
2 Einfaches XY Diagramm selbst zeichnen? AWT, Swing, JavaFX & SWT 6
S LayoutManager Einfaches Programm mit VE und Eclipse3.6 realisieren AWT, Swing, JavaFX & SWT 2
N SWT Einfaches Problem beim Layout AWT, Swing, JavaFX & SWT 8
T einfaches Menü in swing das nicht herunterklappt? AWT, Swing, JavaFX & SWT 4
M Einfaches GUI basteln? AWT, Swing, JavaFX & SWT 5
B Einfaches JScrollPane mit Bildern füllen AWT, Swing, JavaFX & SWT 2
P GridBagLayout einfaches Beispiel geht nicht? AWT, Swing, JavaFX & SWT 5
M treetable einfaches beispiel gesucht AWT, Swing, JavaFX & SWT 6
G Einfaches frame mit einigen Rechtecken (Anfängerfrage) AWT, Swing, JavaFX & SWT 6
M Datenbericht aus Datenbank darstellen.(einfaches Konzept) AWT, Swing, JavaFX & SWT 2
M "einfaches Grafikobjekt erzeugen" AWT, Swing, JavaFX & SWT 8
M suche geeignetes Fenster zur Anzeige AWT, Swing, JavaFX & SWT 49
berserkerdq2 Kann ich ein Rechteck mittig im Fenster halten, egal wie ich die Bildschirmgröße verändere? AWT, Swing, JavaFX & SWT 3
W 2 JTables in einem Swing-Fenster? AWT, Swing, JavaFX & SWT 5
berserkerdq2 Wie füge ich ein Bild in javafx mit dem Scenebuilder ein, das automatisch mitgezogen wird, wenn das Fenster vergrößert wird oder Vollbildmodus AWT, Swing, JavaFX & SWT 6
TheSepp Fenster um x Pixel bewegen, wenn man auf dem Knopf drückt AWT, Swing, JavaFX & SWT 10
J JavaFx PDF in einem Element in einem Fenster anzeigen. AWT, Swing, JavaFX & SWT 11
K JavaFX unterschiedliche (mehrere Fenster) in seperater Main Methode AWT, Swing, JavaFX & SWT 26
_user_q Kann man ein 2. JavaFX-Fenster auch beenden (exit) statt schließen (close) lassen? AWT, Swing, JavaFX & SWT 8
L Swing Files abspeichern mit Save as Dialog Fenster AWT, Swing, JavaFX & SWT 5
G Zuletzt aktives Fenster, vor dem aktuell aktiven AWT, Swing, JavaFX & SWT 2
sserio Kann man bei JavaFx ein Fenster aufkommen lassen? AWT, Swing, JavaFX & SWT 1
Z GUI Forms - Mehrere Fenster in einem Projekt AWT, Swing, JavaFX & SWT 18
S Swing Alles beenden bei Fenster mit Scroll-Balken AWT, Swing, JavaFX & SWT 6
CptK windowClosed() nur aufrufen, wenn Fenster nicht über Button geschlossen wird AWT, Swing, JavaFX & SWT 1
W Zweites/neues Fenster durch Button öffnen AWT, Swing, JavaFX & SWT 6
CptK Fokus auf geöffnetes Zweit-Fenster setzen und Eingaben außerhalb blocken AWT, Swing, JavaFX & SWT 2
B Text mit Absatz + OK-Button, der Fenster wieder schließt AWT, Swing, JavaFX & SWT 7
MiMa JavaFX Fenster in JavaFX öffnen Schliessen (Initialisierung) AWT, Swing, JavaFX & SWT 20
N Kontextmenü (Popup-Fenster) erstellen AWT, Swing, JavaFX & SWT 3
L Hintergrundbild im Fenster darstellen AWT, Swing, JavaFX & SWT 9
P JavaFX Fenster wird nicht angezeigt (Mac) AWT, Swing, JavaFX & SWT 13
VPChief Buttons Reagieren erst wenn ich Fenster minimiere AWT, Swing, JavaFX & SWT 4
B JavaFX TextField Eingabe in neues Fenster übernehmen AWT, Swing, JavaFX & SWT 4
N Drag and Drop Fenster AWT, Swing, JavaFX & SWT 11
A Swing JTextField an Button übergeben für Popup-Fenster funktioniert nicht AWT, Swing, JavaFX & SWT 3
P JavaFX Zugriff auf Fenster/Layout-Container in eigenen Klassen AWT, Swing, JavaFX & SWT 5
Bluedaishi JavaFX Programm start mit zwei scenen bzw Fenster AWT, Swing, JavaFX & SWT 1
J Fenster mit Inhalten aus einem Array Füllen AWT, Swing, JavaFX & SWT 4
S Swing Fenster State Machine AWT, Swing, JavaFX & SWT 1
A Fenster genau unterhalb von JTextField anzeigen AWT, Swing, JavaFX & SWT 1
J Overlay Panel statt neues Fenster AWT, Swing, JavaFX & SWT 6
S Swing Bei start des Programmes kein Fenster zu sehen AWT, Swing, JavaFX & SWT 1
X Neues Fenster mit Button öffnen und bearbeiten AWT, Swing, JavaFX & SWT 4
platofan23 JAVAFX zweites Fenster öffnen AWT, Swing, JavaFX & SWT 2
M JavaFX Altes Fenster (FXML Datei) löschen AWT, Swing, JavaFX & SWT 16
P JavaFX Fenster lädt nicht mehr AWT, Swing, JavaFX & SWT 4
I AWT Listener während man in anderem Fenster ist AWT, Swing, JavaFX & SWT 4
S JavaFX Fenster aufkommen lassen, wenn mit der Maus über bestimmten Bereich fahren AWT, Swing, JavaFX & SWT 1
L Java- UI zweites Fenster aus einer anderen Klasse öffnen durch ButtonClick AWT, Swing, JavaFX & SWT 4
D Swing Neues (3.) Fenster öffnen AWT, Swing, JavaFX & SWT 2
G JavaFX Fenster 1 Array übertragen zur Fenster 2 AWT, Swing, JavaFX & SWT 0
I JavaFX Fenster wird auf einem anderen Rechner anders dargestellt AWT, Swing, JavaFX & SWT 5
K Fenster welches den Sieger anzeigt AWT, Swing, JavaFX & SWT 5
O JavaFX Fenster scließen AWT, Swing, JavaFX & SWT 4
A Swing Fenster ändert Position bei Mausklick nicht AWT, Swing, JavaFX & SWT 2
S SWT neues Fenster, buttons aus alten etc... AWT, Swing, JavaFX & SWT 0
D Java FXML mehrere Fenster AWT, Swing, JavaFX & SWT 4
L Input aus Sub-Fenster Startfenster übergeben AWT, Swing, JavaFX & SWT 5
B AWT Fenster schließt nicht AWT, Swing, JavaFX & SWT 2
H JavaFX Kriege fehler beim Fenster wechseln AWT, Swing, JavaFX & SWT 7
G Swing Wenn ich mein JFrame Fenster vergrößere die Inhalte anpassen AWT, Swing, JavaFX & SWT 1
U Swing Inhalt vom Fenster wird erst durch Hovern oder Klicken sichtbar AWT, Swing, JavaFX & SWT 3
A Nach klick auf Button neuen Inhalt im gleichen Fenster AWT, Swing, JavaFX & SWT 3
T Fenster schließen AWT, Swing, JavaFX & SWT 4
K JavaFX ObservableList + Fenster AWT, Swing, JavaFX & SWT 6
windl Transparentes / halbtransparentes Fenster AWT, Swing, JavaFX & SWT 1
K Fenster mittig im Vollbildschirm - ok, aber ... AWT, Swing, JavaFX & SWT 2
N Swing Sorry nicht mal ein Fenster öffnen... AWT, Swing, JavaFX & SWT 19
S actionlistener mit 2 fenster integrieren AWT, Swing, JavaFX & SWT 11
G Event Handling TableView daten in ein neues Fenster herauslesen? AWT, Swing, JavaFX & SWT 3
C Benutzername in GUI eingeben und nach Spiel neues Fenster Benutzername wieder anzeigen AWT, Swing, JavaFX & SWT 1
C Durch klicken von Button neues Fenster oeffnen AWT, Swing, JavaFX & SWT 18
D JavaFX (WebStart) Graues Fenster beim Start AWT, Swing, JavaFX & SWT 4
J Button vergrößert sich bei Fenster resize AWT, Swing, JavaFX & SWT 22
L Zweites Fenster mit Thread AWT, Swing, JavaFX & SWT 0
Paul15 Zwei Fenster AWT, Swing, JavaFX & SWT 23
T LayoutManager Methode, um Bildschirm(fenster) für Aktualisierungen zu blockieren bzw. freizugeben gesucht AWT, Swing, JavaFX & SWT 2
C AWT Problem mit Protokol Fenster AWT, Swing, JavaFX & SWT 0
L Daten in neuem Fenster AWT, Swing, JavaFX & SWT 2
D Mit Klick auf Button ein neues Fenster erzeugen AWT, Swing, JavaFX & SWT 11
I JTable: Doppelklick auf Table soll neues Fenster öffnen und Daten aus JTable anzeigen AWT, Swing, JavaFX & SWT 4
A Swing Textübergabe innerhalb der Anwendung in unterschiedlichen Fenster AWT, Swing, JavaFX & SWT 8
wolfgang63 JavaFX Animation, Kreise im vorgegebem Takt durchs Fenster laufen lassen AWT, Swing, JavaFX & SWT 3
K Java Button öffnet neues Fenster AWT, Swing, JavaFX & SWT 5
Z Fenster leer, wenn ich ein JTextField erzeuge AWT, Swing, JavaFX & SWT 3
W Swing JScrollPane für mein Fenster AWT, Swing, JavaFX & SWT 4
X Swing 2 Fenster (1 im Vordergrund) AWT, Swing, JavaFX & SWT 6
X Swing Ein neues Fenster öffen aber ohne ein extra Prozess zu starten AWT, Swing, JavaFX & SWT 1
T JavaFX ControlsFX-Notification öffnet nicht wenn kein JavaFX-Fenster offen. AWT, Swing, JavaFX & SWT 1
E JavaFX JavaFX Fenster nicht schließen AWT, Swing, JavaFX & SWT 4
K JavaFX Fenster aufrufen über Menü AWT, Swing, JavaFX & SWT 1

Ähnliche Java Themen

Neue Themen


Oben