Wieso java.lang.StackOverflowError (minimales programm)

Status
Nicht offen für weitere Antworten.
F

Fred1

Gast
Hi!

Ich steh gerade voll an =(

Ich hab hier mal schnell ein kleines beispiel geschrieben das den selben fehler produziert wie mein eigentliches programm...

Beschreibung: Ich hab 2 Klassen (graphics1, test). In jeder Klasse erzeuge ich ein Objekt um auf die Attribute , Methoden der anderen klasse zugreifen zu können. Allerdings bekomm ich folgende Fehlermeldung beim ausführen:


Exception in thread "AWT-EventQueue-0" java.lang.StackOverflowError
at sun.awt.windows.WToolkit.getScreenInsets(Native Method)
at sun.awt.windows.WToolkit.getScreenInsets(Unknown Source)
at java.awt.Window.init(Unknown Source)
at java.awt.Window.<init>(Unknown Source)
at java.awt.Frame.<init>(Unknown Source)
at java.awt.Frame.<init>(Unknown Source)
at javax.swing.JFrame.<init>(Unknown Source)
at test.graphics1.<init>(graphics1.java:29)
at test.test.<init>(test.java:5)...........
.....

graphics1 Klasse:

Code:
package test;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;

import javax.swing.WindowConstants;
import javax.swing.SwingUtilities;

public class graphics1 extends javax.swing.JFrame {
	private JButton jButton1;
	
	test t1 = new test();

	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				graphics1 inst = new graphics1();
				inst.setLocationRelativeTo(null);
				inst.setVisible(true);
			}
		});
	}
	
	public graphics1() {
		super();
		initGUI();
	}
	
	private void initGUI() {
		try {
			BorderLayout thisLayout = new BorderLayout();
			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
			getContentPane().setLayout(thisLayout);
			{
				jButton1 = new JButton();
				getContentPane().add(jButton1, BorderLayout.CENTER);
				jButton1.setText("jButton1");
				jButton1.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						jButton1ActionPerformed(evt);
					}
				});
			}
			pack();
			setSize(400, 300);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	private void jButton1ActionPerformed(ActionEvent evt) {
		System.out.println("jButton1.actionPerformed, event="+evt);
		t1.test();
}

}

test Klasse:

Code:
package test;
import src.Graphics;

public class test {
	graphics1 g1= new graphics1();	
	

	
	void test(){
		
		g1.setTitle("hallo");
	}
	
}

Ich hoffe ihr könnt mir helfen! =)

MFG
 

Ark

Top Contributor
Das ist hart: Von Namenskonventionen und Schnittstellen keine Ahnung, aber erst mal ne GUI bauen! :shock:

Aber zum Thema: Du hast es geschafft, eine gegenseitige Rekursion zu basteln: ein neues graphics1 macht ein neues test, und ein neues test macht ein neues graphics1, und das neue graphics1 macht ein neues test, und dieses neue test macht ein neues graphics1 ... ;)

Ark
 
F

Fred1

Gast
erstmal danke! =)

Alles klar, nur wie kann ich das Problem den jetzt umgehn?
 

Ark

Top Contributor
Nimm Zeile 13 aus graphics1 raus. ;)

Und beschäftige dich erst einmal mit den Grundlagen. Es sieht so aus, als könntest du das gebrauchen. ;)

Ark

EDIT: Nee, nimm lieber Zeile 5 aus test raus ... oder nicht? Junge, was ist das für ein Code?! Da wird man ja irre. >_>

Ark
 
F

Fred1

Gast
Werd ich machen!

@Problem:

Wenn ich zeile 13 rausnehme dann kann ich aber nichtmehr auf die methode test zugreifen.
 
F

Fred1

Gast
Wenn ich Zeile 5 Rausnehm dann kann ich ja nichtmehr auf die attribute/methoden von Graphics zugreifen.
 

Dominik82

Mitglied
Wozu überhaupt eine Klasse test?
Die bringt keinen Nutzen für das Programm, einfach die Methode test in die Klasse graphics1 packen und entsprechend anpassen, dann gibts keine Probleme.
Eine Testklasse macht hier meiner Meinung nach nur Sinn, wenn du dort die main Methode implementierst und von dort dann graphics1 aufrufst...
 

Ark

Top Contributor
Dein Code ist echt zum Fürchten. ;)

Ich versuche mal eben, was Anständiges daraus zu machen. Das Ergebnis wird hier reineditiert werden.

Ark

EDIT:
Code:
package test;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;

import javax.swing.WindowConstants;

public class Fenster extends javax.swing.JFrame implements ActionListener{

	private JButton jButton1;

	public Fenster(){
		setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
		
		getContentPane().setLayout(new BorderLayout());
		jButton1=new JButton();
		jButton1.setText("jButton1");
		jButton1.addActionListener(this);
		getContentPane().add(jButton1,BorderLayout.CENTER);
		
		pack();
		setSize(400,300);
	}

	public void actionPerformed(ActionEvent evt){
		System.out.println("jButton1.actionPerformed, event="+evt);
		setTitle("hallo");
	}
}

Code:
package test;

import javax.swing.*;

public class Test{

	private static Fenster g1;

	public static void main(String[] args){
		g1=new Fenster();
		g1.setLocationRelativeTo(null);
		g1.setVisible(true);
	}
}
Die Struktur hat sich völlig verändert, wie man sieht. ;)

Ark
 

Dominik82

Mitglied
Code:
package test;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;

import javax.swing.WindowConstants;
import javax.swing.SwingUtilities;

public class graphics1 extends javax.swing.JFrame {
   private JButton jButton1;

   public static void main(String[] args) {
      SwingUtilities.invokeLater(new Runnable() {
         public void run() {
            graphics1 inst = new graphics1();
            inst.setLocationRelativeTo(null);
            inst.setVisible(true);
         }
      });
   }
   
   public graphics1() {
      super();
      initGUI();
   }
   
   private void initGUI() {
      try {
         BorderLayout thisLayout = new BorderLayout();
         setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
         getContentPane().setLayout(thisLayout);
         {
            jButton1 = new JButton();
            getContentPane().add(jButton1, BorderLayout.CENTER);
            jButton1.setText("jButton1");
            jButton1.addActionListener(new ActionListener() {
               public void actionPerformed(ActionEvent evt) {
                  jButton1ActionPerformed(evt);
               }
            });
         }
         pack();
         setSize(400, 300);
      } catch (Exception e) {
         e.printStackTrace();
      }
   }
   
   void test(){
	      
	      this.setTitle("hallo");
	   }
   
   private void jButton1ActionPerformed(ActionEvent evt) {
      System.out.println("jButton1.actionPerformed, event="+evt);
      test();
}

}
 
F

Fred1

Gast
Die Test Klasse ist eigentlich nur dazu da, damit ich die methoden Attribute etc dorthinein schreibe um dann in der Graphics klasse darauf zugreifen zu können.

So muss ich nicht die ganzen Methoden etc in die Graphics Klasse schreiben.
 

Dominik82

Mitglied
Also ich würde das dann folgendermaßen machen :

Klasse zur Auslagerung der Methoden :
Code:
package test;

public class Outsourced {
	
	private javax.swing.JFrame frame;
	
	public Outsourced(javax.swing.JFrame frame) {
		this.frame = frame;
	}
	
	 void test(){
	      
	      frame.setTitle("hallo");
	   }
}

graphics Klasse
Code:
package test;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;

import javax.swing.WindowConstants;
import javax.swing.SwingUtilities;

public class graphics1 extends javax.swing.JFrame {
   private JButton jButton1;

   public static void main(String[] args) {
      SwingUtilities.invokeLater(new Runnable() {
         public void run() {
            graphics1 inst = new graphics1();
            inst.setLocationRelativeTo(null);
            inst.setVisible(true);
         }
      });
   }
   
   public graphics1() {
      super();
      initGUI();
   }
   
   private void initGUI() {
      try {
         BorderLayout thisLayout = new BorderLayout();
         setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
         getContentPane().setLayout(thisLayout);
         {
            jButton1 = new JButton();
            getContentPane().add(jButton1, BorderLayout.CENTER);
            jButton1.setText("jButton1");
            jButton1.addActionListener(new ActionListener() {
               public void actionPerformed(ActionEvent evt) {
                  jButton1ActionPerformed(evt);
               }
            });
         }
         pack();
         setSize(400, 300);
      } catch (Exception e) {
         e.printStackTrace();
      }
   }
   
   
   private void jButton1ActionPerformed(ActionEvent evt) {
	  Outsourced o = new Outsourced(this);
      System.out.println("jButton1.actionPerformed, event="+evt);
      o.test();
}

}

Gruß Dominik
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S java.lang.ArrayIndexOutOfBoundsException: 5 nur wieso? Java Basics - Anfänger-Themen 2
G Interface java.util.Comparator: Wieso muss nur die Methode compare() implementiert werden Java Basics - Anfänger-Themen 2
G Wieso brauch java keine main() Methode? Java Basics - Anfänger-Themen 20
P Wieso kann ich als Index für einen Array einen Char angeben? Java Basics - Anfänger-Themen 3
Ostkreuz Wieso wird die Methode nochmal aufgerufen? Java Basics - Anfänger-Themen 5
H Interface Wieso "List<String> list = new ArrayList<>[…]" Java Basics - Anfänger-Themen 4
I Methoden Wieso wird mein Array "a" verändert und meine Variable "a" nicht? Java Basics - Anfänger-Themen 4
sserio Wieso funktioniert mein Programm nicht Java Basics - Anfänger-Themen 2
sserio Wieso werden nicht alle Primzahlen bis 1000 in meine Liste gepackt ? Java Basics - Anfänger-Themen 8
sserio Wieso funktioniert mein TableView nicht /JavaFX. Java Basics - Anfänger-Themen 4
N Wieso funktioniert die Deklaration nicht Java Basics - Anfänger-Themen 3
Zrebna Umgebungsvariable Wieso wird meine verwendete JDK-Version in der Prompt nicht erkannt? Java Basics - Anfänger-Themen 6
F Wieso wird immer die falsche Mausposition angegeben? Java Basics - Anfänger-Themen 1
C Objekt1.equals(Objekt2) = immer false. Wieso? Java Basics - Anfänger-Themen 22
A Wieso bekomme ich hier zwei unterschiedliche Ausgaben? Java Basics - Anfänger-Themen 6
J Fehler im Code, aber ich weiß nicht wieso! Java Basics - Anfänger-Themen 6
ZH1896ZH Wieso diese Ausgabe?? Java Basics - Anfänger-Themen 10
W Wieso funktioniert mein Switch Case nicht ?! Java Basics - Anfänger-Themen 9
D Interface Wieso Aufruf aller Methoden eines Interfaces? Java Basics - Anfänger-Themen 11
F Wieso wird dieser Befehl nicht ausgeführt? (Anfänger) Java Basics - Anfänger-Themen 2
H Datentypen 64 Bit passt in 32 Bit, wieso? Java Basics - Anfänger-Themen 9
L Input/Output Wieso kommt diese Ausgabe? Java Basics - Anfänger-Themen 12
H Wieso wird mir ein Fehler angezeigt? Java Basics - Anfänger-Themen 5
H Wieso öffnet sich der Texteditor? Java Basics - Anfänger-Themen 6
ChrisPL4Y Wieso funktioniert dieses Programm nicht? Java Basics - Anfänger-Themen 6
B Wieso wird die Zeile "column" genannt und die Spalte "line"? Java Basics - Anfänger-Themen 12
B Wieso wird hier so viel als falsch angezeigt? Java Basics - Anfänger-Themen 2
B Wieso gibt er hier nur die ungeraden Zahlen aus? Java Basics - Anfänger-Themen 5
B Wieso gibt das Programm in der Console kein Ergebnis aus? Java Basics - Anfänger-Themen 2
A Wieso charAt(0) + charAt(3) = INT-Wert? Java Basics - Anfänger-Themen 5
H NullPointerException, aber wieso? Java Basics - Anfänger-Themen 5
P Cannot find symbol, wieso? Java Basics - Anfänger-Themen 5
K Wieso muss man finale statische Variablen sofort oder eben im Konstruktor initialisieren? Java Basics - Anfänger-Themen 2
F Operatoren Wieso fliegt hier eine NullPointer Exception :( Java Basics - Anfänger-Themen 3
Z JPanel wird zweimal hinterinander gezeichnet.. Wieso? Java Basics - Anfänger-Themen 4
T Wieso kann ich das jar file nicht starten? Java Basics - Anfänger-Themen 5
S Wieso wird mein JFrame transparent dargestellt? Java Basics - Anfänger-Themen 5
A Wieso übergibt der nicht die bearbeitete txt file Java Basics - Anfänger-Themen 8
Z Lotto-Programm Wieso klappt das? Java Basics - Anfänger-Themen 8
P Compiler-Fehler wieso zeigt der compiler ein else without if? Java Basics - Anfänger-Themen 3
S OOP Die Methode funktioniert, aber wieso? Java Basics - Anfänger-Themen 2
X Connection reset, wieso? Java Basics - Anfänger-Themen 4
T Objektorientierte Programmierung - Kein Plan wieso das nicht funktioniert! Java Basics - Anfänger-Themen 6
A Bild verschwindet! Wieso?? Java Basics - Anfänger-Themen 2
A Wieso kann ich nicht auf diese Variable zugreifen? Java Basics - Anfänger-Themen 6
A Wieso funktioniert dieser Timer nicht?? Java Basics - Anfänger-Themen 3
A Wieso denn das??? Java Basics - Anfänger-Themen 2
A Wieso erscheinen die Objekte manchmal und manchmal nicht Java Basics - Anfänger-Themen 2
A Erste Schritte Wieso funktioniert diese Klasse nicht Java Basics - Anfänger-Themen 11
R Wieso funktioniert dieses Array nicht? Java Basics - Anfänger-Themen 13
S Methoden void-Methode: Wieso gibt es eine Rückgabe? Java Basics - Anfänger-Themen 5
X Stack mit Oberklasse, wieso funktioniert es nicht? Java Basics - Anfänger-Themen 8
SexyPenny90 Wieso ist diese eigene Equals-Methode schlecht? Java Basics - Anfänger-Themen 17
C Klassen Wieso kein infiniter Regress? Java Basics - Anfänger-Themen 4
M ArrayList - remove() löscht nicht! - weiß nicht wieso! Java Basics - Anfänger-Themen 8
X Wieso mehrere JRE ordner? Java Basics - Anfänger-Themen 8
J Regex Ausdrücke im Array - Wieso werden sie nicht erkannt? Java Basics - Anfänger-Themen 4
A Wieso wird immer 0 ausgegeben? Java Basics - Anfänger-Themen 4
R Wieso hat ein Konstruktor keinen Rückgabetyp? Java Basics - Anfänger-Themen 6
T JTable wird nicht erzeugt, wieso? Java Basics - Anfänger-Themen 17
S JTable removeRow() IndexOutOfBounceException - wieso? Java Basics - Anfänger-Themen 3
S wieso Fehlermeldung cannot find symbol hier Java Basics - Anfänger-Themen 10
N NumberFormatException, aber wieso? Java Basics - Anfänger-Themen 5
E Wieso funktioniert Boolean.parseBoolean(s) nicht? Java Basics - Anfänger-Themen 9
T Wieso kompiliert das? Java Basics - Anfänger-Themen 7
B Erste Schritte Programm kompiliert nicht. Wieso? Java Basics - Anfänger-Themen 14
Luk10 Wieso bricht die Rekursion nicht ab? Java Basics - Anfänger-Themen 3
B Warnung : Dead Code. Aber wieso? Java Basics - Anfänger-Themen 10
W Compiler-Fehler NullPointerException. Aber wieso? Java Basics - Anfänger-Themen 2
C Conways Game of Life / "Waldbrandsimulation": wieso temporäres Hilfs-Array?! Java Basics - Anfänger-Themen 8
R If-Abfrage liefert false zurück, wieso ? Java Basics - Anfänger-Themen 20
K Methode funzt nicht, wieso? Java Basics - Anfänger-Themen 12
H Wieso ist das eine Endlosschleife? Java Basics - Anfänger-Themen 8
R wieso Nullpoint und was mit Events ? Java Basics - Anfänger-Themen 14
C Wieso funktioniert das Array nicht? Java Basics - Anfänger-Themen 10
R Wieso hänge ich hier in einer Endlosschleife (vermute ich zumindest)? Java Basics - Anfänger-Themen 2
M Wieso funktioniert dieser simple Code nicht? Java Basics - Anfänger-Themen 9
J Wert wird überschrieben, weiß nicht wieso Java Basics - Anfänger-Themen 2
S wieso ist mein Code falsch? Java Basics - Anfänger-Themen 2
D array.toString() wieso funktioniert es nicht Java Basics - Anfänger-Themen 4
A Wieso terminiert das Programm nicht? Java Basics - Anfänger-Themen 4
B Wieso ein Fehler? illegal Starts of expression? Java Basics - Anfänger-Themen 12
radiac Wieso bekomme ich kein Bild drauf??? Java Basics - Anfänger-Themen 13
Hatebreed Keine Datenbankverbindung, wieso? (ClassNotFoundEscpetion) Java Basics - Anfänger-Themen 18
U Anfänger Frage - Ausgabe funktioniert nicht - Wieso? Java Basics - Anfänger-Themen 10
G Wieso enum Declaration nur außerhalb einer Methode möglich? Java Basics - Anfänger-Themen 9
S Wieso funtkioniert das SQL DELETE nicht? Java Basics - Anfänger-Themen 1
K Wieso schaltet meine CheckBox von selbst um ? Java Basics - Anfänger-Themen 31
fill0soph Wieso ist "Minus-Unendlich" == 1? Java Basics - Anfänger-Themen 4
G Wieso werdne die componentne nciht angezeigt Java Basics - Anfänger-Themen 4
B Primzahlen berechnen - Wieso unterschiedliche Java Basics - Anfänger-Themen 3
K Wieso wird "paint" nicht ausgeführt ? Java Basics - Anfänger-Themen 2
G Wieso eine nullpointerexception? Java Basics - Anfänger-Themen 6
G Wieso ist eine String-Übergabe keine by-reference-Zuweisung? Java Basics - Anfänger-Themen 7
K Wieso kommt ne NullPointerException Java Basics - Anfänger-Themen 3
N Wieso final ? Java Basics - Anfänger-Themen 4
H wieso syntax error bei else ? Java Basics - Anfänger-Themen 3
H wieso fehler ? must return a type of int. Java Basics - Anfänger-Themen 4
F Wieso werden Char-Werte wie Zahlen addiert? Java Basics - Anfänger-Themen 5
M Wieso zeichnet es nicht auf den JPanel Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben