Ein haufen Fehlermeldungen aber keine Ahnung warum...

Zakon

Bekanntes Mitglied
[CODE lang="java" highlight="28"]Exception in Application init 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:64)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
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:64)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1071)
Caused by: java.lang.RuntimeException: Exception in Application init method
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:895)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
at java.base/java.lang.Thread.run(Thread.java:832)
Caused by: java.lang.StackOverflowError
at java.base/java.util.EnumSet.allOf(EnumSet.java:132)
at javafx.graphics/javafx.scene.Node.<init>(Node.java:633)
at javafx.graphics/javafx.scene.Parent.<init>(Parent.java:1418)
at javafx.graphics/javafx.scene.layout.Region.<init>(Region.java:584)
at javafx.controls/javafx.scene.control.Control.<init>(Control.java:431)
at javafx.controls/javafx.scene.control.TextInputControl.<init>(TextInputControl.java:137)
at javafx.controls/javafx.scene.control.TextField.<init>(TextField.java:152)
at javafx.controls/javafx.scene.control.TextField.<init>(TextField.java:143)

at Main.view.View.<init>(View.java:92)
at Main.model.DBConnection.<init>(DBConnection.java:13)
at Main.model.DBConnection.getInstance(DBConnection.java:20)
at Main.logic.Controller.boxFirmafuellen(Controller.java:15)[/CODE]

Ab Zeile 28 wiederholt sich das ganze 100000 mal.

Beim 1.Fehler:
[CODE lang="java" title="Klasse View"] private List<FirmenDetails> listefirma = controller.boxFirmafuellen();[/CODE]

Beim 2.
[CODE lang="java" title="Klasse DB Connection"]public class DBConnection{
View view = new View();
[/CODE]

Beim 3.Fehler
[CODE lang="java" title="Klasse DB Connection" highlight="3"]public static DBConnection getInstance () {
if (INSTANCE == null) {
INSTANCE = new DBConnection();
}
return INSTANCE;
}[/CODE]

Beim 4. Fehler
[CODE lang="java" title="Klasse Controller" highlight="2"] public List<FirmenDetails> boxFirmafuellen() {
List<FirmenDetails> listefirma = DBConnection.getInstance().loadfirmen();
return listefirma;
}[/CODE]

Das Porgramm hat eigentlich ganz normal Funktioniert dann auf einmal nicht mehr ich weiss nicht was ich geändert habe das es nicht mehr funktioniert 🤔

Danke im Vorraus.
 
K

kneitzel

Gast
Also erst einmal die logische Frage: Du hast eine Datenbank-Connection. Wozu muss die denn die View kennen? Das erscheint mir erst einmal ein schlechtes Design zu sein und produziert auch entsprechende Kreise. So siehst Du das dann auch:
- Du rufst irgendwo das erste mal getInstance auf.
-> INSTANCE ist null -> new DBConnection()
-> new View()
-> View ruft im Konstruktor das Box Befüllen auf was wieder getInstance aufruft und der Kreis ist komplett!

Lösung: Vernünftig bauen, so dass die View die Connection nutzt aber die Connection die View nicht kennt. Schon kannst Du so einen Kreis nicht mehr haben!
 

Zakon

Bekanntes Mitglied
Ich brauche aber für ein SQL Statement in der Connection ein Value aus der Box in der View dann wäre doch der einfacshte weg das direkt zu übergeben oder?
 
K

kneitzel

Gast
Ja genau, bei so einer Abfrage übergibst Du dann die Werte. So bist Du bei der Datenbankverbindung unabhängig von der Oberfläche.

Das macht ja auch Sinn, denn so kannst Du dann die Datenbankklasse normal weiter verwenden, wenn Du es z.B. als Web Applikation brauchst ...
 

Zakon

Bekanntes Mitglied
Ich glaube ich verstehe dich nicht ganz richtig :rolleyes: Ich brauche ein wert in der DBConnection von der View. Somit muss die DB Connection doch auch die View kennen damit ich den wert direkt übergeben kann oder?
Java:
"SELECT * FROM Frimen F JOIN Mitarbeiter M ON F.ID=M.Firmen_ID " +
                    "JOIN Produkte P ON P.ID=M.ID WHERE F.Name LIKE '%" + view.getBoxFirma().getValue() + "%'");
 
K

kneitzel

Gast
Du rufst das doch von irgendwo auf. Also gibst Du der Methode, die Du da aufrufst, einen Parameter. Und dann kannst Du diesen Parameter verwenden. Und die Abfrage der Datenbank bitte mit einem Prepared Statement so dass DU den SQL String so nicht zusammen setzt sondern statt dessen Parameter verwendest!
 

Zakon

Bekanntes Mitglied
Also dann so ?
[CODE lang="java" title="Klasse View"]public String auswahlFirmaBox(){
String auswahlFirma = boxFirma.getValue().toString();
return auswahlFirma;
}[/CODE]
[CODE lang="java" title="Klasse Controller"]public String uebergabeBoxFirma(){
String firmauebergabe=view.auswahlFirmaBox();
return firmauebergabe;
}[/CODE]
[CODE lang="java" title="Klasse DB Connection"]"SELECT * FROM Frimen F JOIN Mitarbeiter M ON F.ID=M.Firmen_ID " +
"JOIN Produkte P ON P.ID=M.ID WHERE F.Name LIKE '%" + controller.uebergabeBoxFirma() + "%'")[/CODE]

jetzt gehe ich ja von der View über den Controller in die DBConnection.
Und die Prepared Statements werde ich noch nachtragen :)
 
K

kneitzel

Gast
Du scheinst ja ein MVC Model implementieren zu wollen. Der Controller ist dann dafür zuständig, die Daten zu laden und dann als Model an die View zu geben.

Damit kennt der Controller dann das Data Access Layer. Das DAL kennt aber nur die Daten und sonst nichts. Kann also Daten lesen und schreiben ... im DAL hast Du dann irgendwas a.la.

Java:
List<WhatEver> getWhatEver(final String suchString) {
    // ....
    String SQL = "SELECT * FROM Frimen F JOIN Mitarbeiter M ON F.ID=M.Firmen_ID " +
                 "JOIN Produkte P ON P.ID=M.ID WHERE F.Name LIKE '%" + suchString + "%'";
    // ...
}
Das DAL hat keine Kenntnis von Controller oder View oder sonst irgend etwas Deiner Applikation! Es kennt nur die Entities und so ...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Z Ein Haufen Fehlermeldungen und keine Ahnung... (H2 DB mit Intellij und Scene Builder ) Datenbankprogrammierung 16
I H2 - GUI Tool.... sehe aber keine Tabellen Datenbankprogrammierung 2
J Java fügt Datensätze ein aber diese werden nicht richtig abgefragt Datenbankprogrammierung 3
R HSQLDB ResultSet update aktualisiert DB, aber nicht das ResultSet Datenbankprogrammierung 2
Thallius MySQL Tabelle splitten aber wie eine abfragen? Datenbankprogrammierung 10
B Performance steigern, aber wie? Datenbankprogrammierung 8
T MySQL Datetime wird auf Sekunden gerundet, soll es aber nicht Datenbankprogrammierung 2
P MySQL jpmdbc: Kann lesen aber nicht schreiben? Datenbankprogrammierung 3
1 MySQL Verbindung mit localhost als IP funktioniert, aber mit normaler IP nicht Datenbankprogrammierung 2
S SQLite Selectanfrage lieft datensatz aber cursor ist leer Datenbankprogrammierung 2
H ResultSet is closed tritt bei JSF aber nicht bei einer Java-Applikation auf Datenbankprogrammierung 10
F Derby/JavaDB SQL-Exception...Aber wieso!? :/ Datenbankprogrammierung 2
S MySQL INSERT schlägt nicht fehl, fügt aber auch nichts ein Datenbankprogrammierung 13
K MySQL Verbindung funktioniert in Netbeans aber .jar funktioniert nicht Datenbankprogrammierung 5
U MSSQL Verbindung steht, aber meckert beim Statement Datenbankprogrammierung 2
R Tabelle Updaten aber auch Speichern Datenbankprogrammierung 2
R DB-Connection, aber wie? Datenbankprogrammierung 2
T Datenbank.aber wie? Datenbankprogrammierung 6
S Access und Java, aber wie? Datenbankprogrammierung 4
P Fehler: result-set zeigt auf null, aber warum Datenbankprogrammierung 4
R ResultSet liefert oracle.sql.TIMESTAMP, aber unbrauchbar Datenbankprogrammierung 9
H MySQL Zugriffe (es geht, aber warum?) Datenbankprogrammierung 4
M Daten werde gesetzt, aber trotzdem Fehlermeldung! Datenbankprogrammierung 3
B ResultSet aus Session geladen, aber kein Zugriff möglich Datenbankprogrammierung 6

Ähnliche Java Themen

Neue Themen


Oben