JavaFX Webapp Runtime error

anubarak16

Mitglied
Hallo an alle,

ich bin was Java angeht ein ziemlicher Neuling und habe um ehrlich zu sein nicht wirklich viel Ahnung von der Materie (Schande auf mein Haupt) muss aber leider für mein Studium jetzt eine Oberfläche mit JavaFX gestallten und diese sowohl als Programm als auch auf einer Internetseite zum laufen bekommen. Und bei letzteren habe ich so einige Probleme und weiß nicht wirklich weiter.

Ich habe mir bereits einige Tutorials angeschaut dazu, wurde aber nicht so recht schlau davon, daher wäre ich sehr dankbar wenn mir hier jemand helfen könnte und eventuell Schritt für Schritt erklären könnte was ich machen muss.

Also folgendes: Ich erstelle ein Projekt in Netbeans und erstelle die dazu gehörige Oberfläche in JavaFX. Soweit so gut, der Javaprogrammierteil lief soweit auch recht gut, die Oberfläche läuft da ich schon 4 Jahre C++ schreibe hatte ich damit auch weniger Probleme. Jetzt kommt nur die Sache, dass ich das in eine Internetseite einbinden muss. HTML/PHP Kenntnisse habe ich, daran scheitert es nicht. Allerdings kommt immer die meldung "runntime error" wenn ich die .jnlp oder auch die .html im disc Ordner öffne. Selbst wenn ich ein komplett leeres/neues Projekt öffne läuft die .jar Datei ohne Probleme, die Webapp funktioniert aber gar nicht und es kommt folgende Fehlermeldung

Code:
Java-Plug-in 11.25.2.18
JRE-Version verwenden 1.8.0_25-b18 Java HotSpot(TM) Client VM
Benutzer-Home-Verzeichnis = C:\Users\robin
----------------------------------------------------
CacheEntry[file:/C:/Users/robin/Documents/NetBeansProjects/JavaFXApplication2/dist/JavaFXApplication2.jnlp]: updateAvailable=false,lastModified=Sun Dec 21 16:54:59 CET 2014,length=980
CacheEntry[file:/C:/Users/robin/Documents/NetBeansProjects/JavaFXApplication2/dist/JavaFXApplication2.jar]: updateAvailable=false,lastModified=Sun Dec 21 16:27:21 CET 2014,length=914666
java.lang.NullPointerException: Location is required.
	at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
	at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
	at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
	at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
	at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
	at javafx.fxml.FXMLLoader.load(Unknown Source)
	at javafxapplication2.JavaFXApplication2.start(JavaFXApplication2.java:22)
	at com.sun.javafx.applet.FXApplet2$2.run(Unknown Source)
	at com.sun.javafx.application.PlatformImpl.lambda$null$164(Unknown Source)
	at com.sun.javafx.application.PlatformImpl$$Lambda$44/12700744.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at com.sun.javafx.application.PlatformImpl.lambda$runLater$165(Unknown Source)
	at com.sun.javafx.application.PlatformImpl$$Lambda$43/11716686.run(Unknown Source)
	at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source)
	at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
	at com.sun.glass.ui.win.WinApplication.lambda$null$141(Unknown Source)
	at com.sun.glass.ui.win.WinApplication$$Lambda$35/22543536.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: java.lang.NullPointerException: Location is required.
	at com.sun.javafx.applet.FXApplet2$2.run(Unknown Source)
	at com.sun.javafx.application.PlatformImpl.lambda$null$164(Unknown Source)
	at com.sun.javafx.application.PlatformImpl$$Lambda$44/12700744.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at com.sun.javafx.application.PlatformImpl.lambda$runLater$165(Unknown Source)
	at com.sun.javafx.application.PlatformImpl$$Lambda$43/11716686.run(Unknown Source)
	at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source)
	at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
	at com.sun.glass.ui.win.WinApplication.lambda$null$141(Unknown Source)
	at com.sun.glass.ui.win.WinApplication$$Lambda$35/22543536.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException: Location is required.
	at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
	at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
	at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
	at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
	at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
	at javafx.fxml.FXMLLoader.load(Unknown Source)
	at javafxapplication2.JavaFXApplication2.start(JavaFXApplication2.java:22)
	... 11 more

Ich habe jetzt stundenlang im Internet gesucht aber keine wirkliche Hilfe bekommen bzw kam wenn ich was gefunden habe teilweise damit nicht klar.

Gibt es jemanden der mir am besten mit leicht verständlichen Worten so gut wie möglich erklären könnte was ich machen muss um das zum laufen zu bringen? Achja, ich habe erst seit Freitag mit Java zu tun, also seid bitte Nachsichtig und beachtet, dass ich mit Javaspezifischen Fachbegriffen nicht viel anfangen kann.

Vielen Dank und schönen Sonntag noch
ps: tut mir sehr leid wenn ich im falschen Unterforum bin, ich war nicht sicher wohin ich genau hin musste mit dem Problem^^"
 

dzim

Top Contributor
Diese Zeilen sollte dir Hinweise geben:
Code:
...
Caused by: java.lang.NullPointerException: Location is required.
    ...
    at javafxapplication2.JavaFXApplication2.start(JavaFXApplication2.java:22)

NullPointerException = irgendetwas, hier eine Instanz der Klasse "Location" wurde nicht erstellt, sondern eine "null" übergeben.
In Zeile 22 der Start-Methode deiner JavaFX-Applikation (JavaFXApplication2.java) wurde konkret diese "null" übergeben. Beheben, dann klappt es.
 

anubarak16

Mitglied
Hallo und vielen Dank für die Antwort
In dieser Klasse steht an dieser Stelle das hier

Java:
    @Override
    public void start(Stage stage) throws Exception {
        Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));
        
        Scene scene = new Scene(root);
        
        stage.setScene(scene);
        stage.show();
    }

Zeile 22 speziell ist diese Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));

allerdings ist das schon Standart da gewesen, an dieser Klasse habe ich rein gar nichts verändert, Stimmt dann etwas mit Netbeans nicht oder was muss ich da machen? Ich habe ehrlich gesagt keinen wirklichen Plan.

Hoffe auf Hilfe, vielen Dank und schönen Sonntag noch
 

dzim

Top Contributor
Dann wäre es interessant, wie deine FXML aussieht. Ich vermute du verwendest eine Properties-Datei für alle Texte, oder? Wenn ja, ist diese noch nicht im Programm (ResourceProperties) angemeldet. Entweder das, oder dein Controller hat noch ein Problem. Dieser wäre also auch noch interessant, sich einmal anzuschauen.
 

anubarak16

Mitglied
Hallo,

Also meine FXML Datei sieht so aus

Java:
<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.text.*?>
<?import javafx.scene.image.*?>
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>

<AnchorPane id="AnchorPane" prefHeight="409.0" prefWidth="374.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="JavaFXApplication2.FXMLDocumentController">
    <children>
      <ImageView fitHeight="423.0" fitWidth="407.0" pickOnBounds="true" preserveRatio="true">
         <image>
            <Image url="@../checkered_paper.jpg" />
         </image>
      </ImageView>
        <Button fx:id="button_logout" layoutX="303.0" layoutY="371.0" onAction="#handleButtonLogout" text="Logout" />
        <Label fx:id="label" layoutX="126" layoutY="120" minHeight="16" minWidth="69" />
      <ImageView fx:id="pacman_play" fitHeight="150.0" fitWidth="150.0" layoutX="120.0" layoutY="186.0" pickOnBounds="true" preserveRatio="true" visible="false">
         <image>
            <Image url="@../pacman_fun.gif" />
         </image>
      </ImageView>
      <ImageView fx:id="pacman_eat" disable="true" fitHeight="150.0" fitWidth="150.0" layoutX="120.0" layoutY="186.0" pickOnBounds="true" preserveRatio="true" visible="false">
         <image>
            <Image url="@../Pacman_eat.gif" />
         </image>
      </ImageView>
      <ImageView fx:id="pacman_stand" fitHeight="150.0" fitWidth="150.0" layoutX="120.0" layoutY="186.0" pickOnBounds="true" preserveRatio="true">
         <image>
            <Image url="@../pacman_stand.gif" />
         </image>
      </ImageView>
      <ImageView fx:id="pacman_sleep" fitHeight="150.0" fitWidth="200.0" layoutX="120.0" layoutY="186.0" pickOnBounds="true" preserveRatio="true" visible="false">
         <image>
            <Image url="@../pacman_sleep.gif" />
         </image>
      </ImageView>
      <ImageView fx:id="pacman_sleep2" fitHeight="150.0" fitWidth="200.0" layoutX="120.0" layoutY="186.0" pickOnBounds="true" preserveRatio="true" visible="false">
         <image>
            <Image url="@../pacman_sleep2.gif" />
         </image>
      </ImageView>
      <Button fx:id="button_feed" layoutX="20.0" layoutY="371.0" mnemonicParsing="false" onAction="#handleButtonEat" text="Füttern" />
      <Button fx:id="button_play" layoutX="93.0" layoutY="371.0" mnemonicParsing="false" onAction="#handleButtonPlay" text="Spielen" />
      <Button fx:id="button_clean" layoutX="164.0" layoutY="371.0" mnemonicParsing="false" onAction="#handleButtonClean" text="Säubern" />
      <Button fx:id="button_sleep" layoutX="236.0" layoutY="371.0" mnemonicParsing="false" onAction="#handleButtonSleep" text="Schlafen" />
      <AnchorPane prefHeight="200.0" prefWidth="407.0">
         <children>
            <Label layoutX="17.0" layoutY="87.0" text="Hunger:">
               <font>
                  <Font size="18.0" />
               </font>
            </Label>
            <Label layoutX="17.0" layoutY="108.0" text="Laune:">
               <font>
                  <Font size="18.0" />
               </font>
            </Label>
            <Label layoutX="17.0" layoutY="129.0" text="Sauberkeit:">
               <font>
                  <Font size="18.0" />
               </font>
            </Label>
            <Label layoutX="14.0" layoutY="150.0" text="Müdigkeit:">
               <font>
                  <Font size="18.0" />
               </font>
            </Label>
            <Label fx:id="label_hunger" layoutX="149.0" layoutY="90.0" text="100/100">
               <font>
                  <Font size="18.0" />
               </font>
            </Label>
            <Label fx:id="label_play" layoutX="149.0" layoutY="108.0" text="100/100">
               <font>
                  <Font size="18.0" />
               </font>
            </Label>
            <Label fx:id="label_clean" layoutX="149.0" layoutY="129.0" text="100/100">
               <font>
                  <Font size="18.0" />
               </font>
            </Label>
            <Label fx:id="label_sleep" layoutX="149.0" layoutY="150.0" text="100/100">
               <font>
                  <Font size="18.0" />
               </font>
            </Label>
            <Label layoutX="18.0" layoutY="17.0" text="Name:">
               <font>
                  <Font size="18.0" />
               </font>
            </Label>
            <Label fx:id="label_name" layoutX="83.0" layoutY="17.0" text="hierkönnte ihr Name stehen">
               <font>
                  <Font size="18.0" />
               </font>
            </Label>
            <Label layoutX="18.0" layoutY="38.0" text="Alter:">
               <font>
                  <Font size="18.0" />
               </font>
            </Label>
            <Label fx:id="label_age" layoutX="83.0" layoutY="38.0" text="5 Tage">
               <font>
                  <Font size="18.0" />
               </font>
            </Label>
            <Label layoutX="18.0" layoutY="66.0" text="Gesundheit:">
               <font>
                  <Font size="18.0" />
               </font>
            </Label>
            <Label fx:id="label_health" layoutX="149.0" layoutY="66.0" text="100/100">
               <font>
                  <Font size="18.0" />
               </font>
            </Label>
         </children>
      </AnchorPane>
      <ImageView fx:id="pacman_poo" fitHeight="150.0" fitWidth="200.0" layoutX="32.0" layoutY="186.0" pickOnBounds="true" preserveRatio="true" visible="false">
         <image>
            <Image url="@../pacman_poo.png" />
         </image>
      </ImageView>
      <AnchorPane fx:id="Pane_PetChoose" prefHeight="409.0" prefWidth="407.0" style="-fx-background-color: white;">
         <children>
            <ListView fx:id="List_PetList" layoutX="30.0" layoutY="57.0" prefHeight="283.0" prefWidth="150.0" />
            <Button fx:id="button_login" layoutX="30.0" layoutY="358.0" mnemonicParsing="false" onAction="#handleButtonLogin" text="Einloggen" />
            <Button fx:id="button_create_tamagotchi" layoutX="185.0" layoutY="358.0" mnemonicParsing="false" onAction="#handleButtonCreateNew" text="Neues tamagotchi erstellen" />
            <TextField fx:id="text_name" layoutX="185.0" layoutY="317.0" promptText="Name des Tamagotchi" />
            <Label layoutX="99.0" layoutY="9.0" text="Tamagotchi">
               <font>
                  <Font size="40.0" />
               </font>
            </Label>
         </children>
      </AnchorPane>
    </children>
</AnchorPane>

Ich vermute du verwendest eine Properties-Datei für alle Texte, oder? Wenn ja, ist diese noch nicht im Programm (ResourceProperties) angemeldet.
Weiß ich nicht wirklich... Ich habe bisher noch nichts mit einer Property Datei zu tun gehabt. Ich habe immer nur in der Datei FXMLDocumentController.java gearbeitet und alle anderen nicht einmal geöffnet außer die FXML Datei eben in JavaFX 2.0.


Meine Schritte waren eigentlich bisher
  • Java JDK, Netbeans und JavaFX installieren
  • Programme öffnen
  • Neues Projekt starten
  • Oberfläche in JavaFX erstellen + IDs vergeben
  • in Netbeans die Klasse FXMLDocumentController.java bearbeiten
  • merken, dass die Webapps nicht funktionieren -> im Forum um Hilfe bitten und Stundenlang im Internet suchen

Das heißt eigentlich habe ich nichts weiter als das gemacht, aber in allen Tutorials, die ich so gefunden habe steht, dass bei Java angeblich automatisch eine Jar und eine jnlp Datei entstehen soll, die ohne Probleme laufen. Nur bei mir ist letzteres eben nicht der Fall.

Ich hoffe ich stelle mich nicht allzu dumm an^^"
 
Zuletzt bearbeitet:

dzim

Top Contributor
Ok, kurzer Blick über das FXML: Du verwendest statische Texte. Kein Problem an der Front, IMHO.

Zeig mal den Code vom Controller (JavaFXApplication2.FXMLDocumentController) am besten den ganzen Code der Klasse JavaFXApplication2...
 

anubarak16

Mitglied
Das ist die Datei JavaFXApplication2.java

Java:
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package javafxapplication2;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

/**
 *
 * @author robin
 */
public class JavaFXApplication2 extends Application {
    
    @Override
    public void start(Stage stage) throws Exception {
        Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));
        
        Scene scene = new Scene(root);
        
        stage.setScene(scene);
        stage.show();
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        launch(args);
    }
    
}

und dieses ist der Controller. Bitte ignoriere einfach die Kommentare, wir müssen das Projekt zu zweit machen und meine Aufgabe ist allein die GUI, das Backend macht ein Kumpel. Es ist ein tamagotchi mit Java geschrieben mit einen Pacman als Figur (also nicht wegen der seltsamen Namen wundern^^)

Java:
package javafxapplication2;

import java.net.URL;
import java.util.ResourceBundle;
import java.util.Timer;
import java.util.TimerTask;
import javafx.application.Platform;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.ListView;
import javafx.scene.control.TextField;
import javafx.scene.image.ImageView;
import javafx.scene.layout.AnchorPane;

public class FXMLDocumentController implements Initializable {
    
    //max stats of Pacman
    private final int MAXIMUM_FOOD                = 100;
    private final int MAXIMUM_SLEEP               = 100;
    private final int MAXIMUM_FUN                 = 100;
    private final int MAXIMUM_CLEANLINESS         = 100;
    private final int MAXIMUM_HEALTH              = 100;
    
    //current stats of Pacman
    private int pacManStatusFood            = 100;
    private int pacManStatusSleep           = 100;
    private int pacManStatusFun             = 100;
    private int pacManStatusCleanliness     = 100;
    private int pacManStatusHealth          = 100;
    
    //duration of animations
    private final float DURATION_OF_EAT_ANIMATION     = 3;
    private final float DURATION_OF_SLEEP_ANIMATION   = 1;
    private final float DURATION_OF_FUN_ANIMATION     = 1;
    
    //Gui update Timer
    private final long TIMER_ACTUALISATION           = 10 * 1000; //every 10 sec
    private boolean    isTimerActive                 = false;
    //Labels of Pacmans status
    @FXML
    private Label label_hunger;
    @FXML
    private Label label_clean;
    @FXML
    private Label label_sleep;
    @FXML
    private Label label_play;
    @FXML
    private Label label_age;
    @FXML
    private Label label_name;
    @FXML
    private Label label_health;
    
    //animations of Pacman
    @FXML
    private ImageView pacman_play;
    @FXML
    private ImageView pacman_eat;
    @FXML
    private ImageView pacman_stand;
    @FXML
    private ImageView pacman_sleep;
    @FXML
    private ImageView pacman_sleep2;
    @FXML
    private ImageView pacman_poo;
    
    //All Buttons
    @FXML
    private Button button_play;
    @FXML
    private Button button_sleep;
    @FXML
    private Button button_feed;
    @FXML
    private Button button_clean;
    @FXML
    private Button button_logout;
    @FXML
    private Button button_create_tamagotchi;
    @FXML
    private Button button_login;
    
    @FXML
    private ListView List_PetList;
    @FXML
    private AnchorPane Pane_PetChoose;
    @FXML
    private TextField text_name;
    
    //Hides All Images
    private void hideAllImages(){
        pacman_stand.setVisible(false);
        pacman_eat.setVisible(false);
        pacman_play.setVisible(false);
        pacman_sleep.setVisible(false);
        pacman_sleep2.setVisible(false);
    }//end hideAllImages()
    
    //Disable All Buttons
    private void disableAllButtons(boolean _attribute){
        button_play.setDisable(_attribute);
        button_sleep.setDisable(_attribute);
        button_clean.setDisable(_attribute);
        button_feed.setDisable(_attribute);
        button_logout.setDisable(_attribute);
    }
    
    //Feeding
    @FXML
    private void handleButtonEat(ActionEvent event) {
        //Feeds Pacman
        hideAllImages();
        disableAllButtons(true);
        pacman_eat.setVisible(true);
        
        //Timer to end the animation
        Timer t = new Timer();
        t.schedule(new TimerTask() {
        @Override
            public void run() {
            Platform.runLater(new Runnable() {
               public void run() {
                  pacman_eat.setVisible(false);
                  pacman_stand.setVisible(true);
                  disableAllButtons(false);
                  /////////////////////////
                  //Database Updates....
                  /////////////////////////
                  label_hunger.setText(Integer.toString(MAXIMUM_FOOD)+"/"+Integer.toString(MAXIMUM_FOOD));
              }
            });
        }//end of Run
        }, (long)(DURATION_OF_EAT_ANIMATION*1000)); //end of Timer
        
    }//end of handleButtonEat();
    
    //Playing
    @FXML
    private void handleButtonPlay(ActionEvent event) {
        //Play with Pacman
        hideAllImages();
        disableAllButtons(true);
        pacman_play.setVisible(true);
        
        //Timer to end the animation
        Timer t = new Timer();
        t.schedule(new TimerTask() {
        @Override
            public void run() {
            Platform.runLater(new Runnable() {
               public void run() {
                  pacman_play.setVisible(false);
                  pacman_stand.setVisible(true);
                  disableAllButtons(false);
                  /////////////////////////
                  //Database Updates....
                  /////////////////////////
                  label_hunger.setText(Integer.toString(MAXIMUM_FUN)+"/"+Integer.toString(MAXIMUM_FUN));
              }
            });
        }//end of Run
        }, (long)(DURATION_OF_FUN_ANIMATION*1000)); //end of Timer
    }//end of handleButtonFun();

    //Sleeping
    @FXML
    private void handleButtonSleep(ActionEvent event) {
        //Let Pacman Sleep
        hideAllImages();
        disableAllButtons(true);
        pacman_sleep.setVisible(true);
        
        //Timer to end the animation
        Timer t = new Timer();
        t.schedule(new TimerTask() {
        @Override
            public void run() {
            Platform.runLater(new Runnable() {
               public void run() {
                  pacman_sleep.setVisible(false);
                  pacman_sleep2.setVisible(true);
                  disableAllButtons(false);
                  /////////////////////////
                  //Database Updates....
                  /////////////////////////
                  label_hunger.setText(Integer.toString(MAXIMUM_SLEEP)+"/"+Integer.toString(MAXIMUM_SLEEP));
              }
            });
        }//end of Run
        }, (long)(DURATION_OF_SLEEP_ANIMATION*1000)); //end of Timer
    }//end of handleButtonFun();
    
    //cleaning
    @FXML
    private void handleButtonClean(ActionEvent event){
        pacman_poo.setScaleX(1);
        pacman_poo.setScaleY(1);
        pacman_poo.setVisible(false);
    }//end of handleButtonClean
    
    //wakes Pacman
    private void wakePacman(){
        hideAllImages();
        pacman_stand.setVisible(true);
    }//end of wakePacman
    
    //Create a new Pet
    @FXML
    private void handleButtonCreateNew(ActionEvent event) {
        Pane_PetChoose.setVisible(false);
        updateGUI();
        isTimerActive = true;
        //Database connection create Pet
    }//end of handleButtonCreateNew
    
    //Login
    @FXML
    private void handleButtonLogin(ActionEvent event){
        isTimerActive = true;
        updateGUI();
        Pane_PetChoose.setVisible(false);
        //Database connection
    }//end of handleButtonLogin
    
    //Logout
    @FXML
    private void handleButtonLogout(ActionEvent event) {
        isTimerActive = false;
        Pane_PetChoose.setVisible(true);
        //Database connection
    }//end of handleButtonLogout
    
    private void createListOfPets(){
        //Database connection to get the Pet Names
    }//end of CreateListOfPets
    
    private void updateGUI(){
        //////////////////////////////////////////
        //
        //   Check Stats, Create Poo and so on...
        //   actualize labels
        //
        //////////////////////////////////////////
        System.out.println("gui Update");
    }//end of updateGUI
    
    //Create Update Timer
    private void startTimer(){
        Timer t = new Timer();
        t.schedule(new TimerTask() {
        @Override
            public void run() {
            Platform.runLater(new Runnable() {
               public void run() {
               if (isTimerActive) updateGUI();
               }
            });
        }
        }, 0,TIMER_ACTUALISATION); //Timer    
    }//end of startTimer()
    
    //initialize method
    @Override
    public void initialize(URL url, ResourceBundle rb) {
        // TODO
        createListOfPets(); //Creates the petlist
        startTimer();
    }//end of inizialize    
    
}

vielen, vielen, vielen Dank für deine Hilfe und die Zeit, die du investierst :D
 

dzim

Top Contributor
Ok, ich denke der Fehler ist recht simpel:
In deinem FXML steht, der Controller wäre hier: JavaFXApplication2.FXMLDocumentController
Das würde bedeuten, dein Controller wäre eine Unterklasse von JavaFXApplication2 - also innerhalb des Quellcodes von JavaFXApplication2. Ausserdem würdet ihr dann nur im default-Package arbeiten. Das ist nicht beides nicht der Fall (und in beiden Fällen gilt: Das ist auch gut so!).

Der Eintrag im FXML gibt die genaue Position - eben die Location - des Controllers an. Du hast hier also einen simplen Schreibfehler, denn statt JavaFXApplication2.FXMLDocumentController müsste es javafxapplication2.FXMLDocumentController heissen (Ihr habt den Klassennamen des Mains im default-Package verwendet, aber nicht das korrekte package).

Sucht euch vielleicht mal einen besseren PackageNamen (und auch Klassennamen für die Main-Klasse - Main würde schon genügen). Damit kann man solche Verwirrung vermeiden.
Gut wäre so etwas wie "[eu|de|...].<deine-uni>.<abteilung>.<projekt-name>". Und vielleicht eine entsprechende Struktur darunter für das Backend.
Z.B. "<package-siehe-oben>.model" für POJOs (also Bean-Klassen, die nur die Daten darstellen, z.B. Pet, ...
Dann noch so etwas wie "<package-siehe-oben>.db" für alle Datenbankoperationen, und so weiter.
 
Zuletzt bearbeitet:

anubarak16

Mitglied
Hallo,

danke und sry das ich erst jetzt wieder schreibe.
Hab das schon mal korrigiert, allerdings geht es immernoch nicht. Gleicher Fehler, die rar Datei lässt sich problemlos öffnen, der Rest leider nicht v.v

Das mit dem Dateinamen weiß ich eigentlich schon, mache ich sonst auch immer richtig (zumindest wenn ich in c++ und php arbeite) eigentlich wollte ich erst nur ein Testprojekt machen, was ich dann aber einfach weiter verwendet habe. Deswegen habe ich dem Projekt einfach den Standartnamen gelassen. Werden wir dann noch ändern, spätestens wenn ich es ins Git lade.

Wie es aussieht ist das wohl ein äußerst seltsames Problem <.< ich hoffe ich bekomme das noch irgendwie hin
 

dzim

Top Contributor
Welche Rar-Datei? Du verwirrst mich jetzt eher... Ich verstehe im Moment nicht ganz, was du hier auf einmal für IMHO recht seltsame Probleme hast.

Das Problem ist, meiner Meinung nach, dass du mit deiner eigenen Projektstruktur nicht zurecht kommst. Nach dem, was ich bisher an Code gesehen habe, war der einzige Fehler, dass der Packetname falsch geschrieben ist. Da du immer noch nicht weiter zu sein scheinst, bleibt mir noch eine Frage offen: Wo liegt dein FXML überhaupt? Laut deinem Code-Schnipsel der Main-Klasse, muss es im selben Package liegen, denn getClass().getResource("FXMLDocument.fxml") verwendet einen Relativen Pfad (ausgehend vom Classloader). "FXMLDocument.fxml" ist also das selbe wie "./FXMLDocument.fxml". Da du in der Main-Klasse getClass() verwendest, versucht das Programm also nun, die Resource relativ, beginnend von dieser Klasse aus, zu laden.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
MiMa JavaFX Runtime components are Missing??? AWT, Swing, JavaFX & SWT 3
H Fehler: Zum Ausführen dieser Anwendung benötigte JavaFX-Runtime-Komponenten fehlen AWT, Swing, JavaFX & SWT 44
G JavaFX BarChart während der Runtime aktualisieren AWT, Swing, JavaFX & SWT 4
F JavaFX JavaFX Builden: JavaFX Runtime components are missing AWT, Swing, JavaFX & SWT 0
E Wo findet man: org.eclipse.core.runtime.ListenerList AWT, Swing, JavaFX & SWT 4
X Prozess mit Runtime.getRuntime in SwingWorker aufrufen AWT, Swing, JavaFX & SWT 6
D Runtime.getRuntime.exec() + SWT oder Swing = geht nicht AWT, Swing, JavaFX & SWT 2
C Problem mit JDialog und Runtime.getRuntime().exec AWT, Swing, JavaFX & SWT 2
T Java Runtime.exec per JButton auslösen -> Programm hängt AWT, Swing, JavaFX & SWT 10
M JavaFX java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found AWT, Swing, JavaFX & SWT 5
P Fehlermeldung: Error: Could not find or load main class set Caused by: java.lang.ClassNotFoundException: set AWT, Swing, JavaFX & SWT 5
E 3D-Grafik Java Fatal error bei LWJGL AWT, Swing, JavaFX & SWT 2
izoards [Fatal Error] org.xml.sax.SAXParseException AWT, Swing, JavaFX & SWT 10
M Error occurred during initialization of boot layer java.lang.module.FindException: Module javafx.controls not found AWT, Swing, JavaFX & SWT 14
M error: package javafx.scene.web is not visible import javafx.scene.web.*; AWT, Swing, JavaFX & SWT 16
J SWT SWT Error: No more handles AWT, Swing, JavaFX & SWT 3
zhermann JavaFX DialogPane.showAndWait wirft Cast Error AWT, Swing, JavaFX & SWT 1
S JDBC Error "Too many Connections" AWT, Swing, JavaFX & SWT 11
I Fataler Error bei GUI-Ausführung AWT, Swing, JavaFX & SWT 3
E Swing Error icon in der TextArea AWT, Swing, JavaFX & SWT 1
U JavaFX Error: Handler Method not found AWT, Swing, JavaFX & SWT 3
N css und JavaFX error parse AWT, Swing, JavaFX & SWT 6
D JavaFX build.fxbuild error beim Erstellen einer exe AWT, Swing, JavaFX & SWT 2
L Rekursive Methoden -> Error: StackOverFlow AWT, Swing, JavaFX & SWT 2
X JavaFX TableView Error beim clicken des außenbereiches AWT, Swing, JavaFX & SWT 5
A Swing Zahlenraten GUI wirft nur die Error Message aus AWT, Swing, JavaFX & SWT 6
A Java Swing Error AWT, Swing, JavaFX & SWT 3
Corben ActionListener Error AWT, Swing, JavaFX & SWT 2
E Laden von Bilddateien erzeugt OutOfMemory Error AWT, Swing, JavaFX & SWT 6
M JTree => Event Dispatching Error AWT, Swing, JavaFX & SWT 2
C SWT Error/Warnings in TreeView AWT, Swing, JavaFX & SWT 2
F Java heap space error trotz -Xmx512m AWT, Swing, JavaFX & SWT 9
G wirklich großer Text in JTextArea => Heap Space Error AWT, Swing, JavaFX & SWT 5
G Uncaught error fetching image + Ich checks nicht^^ AWT, Swing, JavaFX & SWT 6
V Lock & Feel für Error-Messages AWT, Swing, JavaFX & SWT 6
A error fetching image AWT, Swing, JavaFX & SWT 5
M Uncaught error fetching image AWT, Swing, JavaFX & SWT 2
N JList getSelectedIndex-Error AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben