ExceptionInInitializerError

Status
Nicht offen für weitere Antworten.

Marcello

Mitglied
Hi,

wollte nach etwas längerer Zeit mal wieder eine GUI schreiben und erstma recht einfach anfangen, also ne alte Klasse zur Vorlage genommen, die dann nach und nach erweitert werden sollte.

Doch beim ausführen schmeisst er dann oben genannte Exception, wobei ich mir recht sicher bin, dass die Klasse genau so bereits früher einwandfrei funktioniert hat. Habe also keinen blassen Dunst woran es liegen könnte.

Hier die Klassen:

- Fenster
Code:
public class Fenster extends JFrame
{
	public Fenster(String titel, ImageIcon icon, Rectangle groesse, Color farbe)
	{
		setTitle(titel);
		setIconImage(icon.getImage());
		setBounds(groesse);
		getContentPane().setBackground(farbe);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
}

- Main
Code:
public class Main
{
	public static void main(String[] args)
	{
		/** Fenstereigenschafte festlegen **/
		String titel = "Basketballverwaltung";
		ImageIcon icon = new ImageIcon("icon/icon.jpg");
		Color farbe = Color.LIGHT_GRAY;
		int breite = 800;
		int hoehe = 700;
		Rectangle groesse = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize().width / 2 - (breite / 2), 
																			Toolkit.getDefaultToolkit().getScreenSize().height / 2 - (hoehe / 2), breite, hoehe);
		
		Fenster hauptfenster = new Fenster(titel, icon, groesse, farbe);
		hauptfenster.setVisible(true);
	}
}

Hoffe jemand erkennt das Problem, danke schonmal!
 

André Uhres

Top Contributor
Im Code selbst ist natürlich kein Problem, da er schonmal lief.
Liegt sicher an einer veränderten Umgebung.
Wenn du eine IDE benutzt, dann legt mal ein neues Projekt an und kopier die Quelldateien dorthin.
 

Marcello

Mitglied
habe ich auch schon probiert, hat leider nichts geändert.

Habe aber vor ein paar Tagen von JRE auf JDK gewechselt, weil ein RMI Compiler gefehlt hat.

Kann es daran liegen? Und noch wichtiger: falls ja was kann ich jetzt machen (ausser zurückwechseln)?

/ Edit: Habe es gerade mit der alten versucht, hat auch nichts geändert
 

kleiner_held

Top Contributor
Ich sehe in deinem Code keinen Punkt an dem ich einen ExceptionInInitializerError erwarte.
Der Error kapselt eine Exception die während der Initialisierung einer Klasse auftritt. Wie ist die Fehlerausgabe genau?

Wenn ich zum Beispiel
Code:
public class Test
{
    static
    {
        if (true)
            throw new NullPointerException();
    }

    public static void main(String[] args)
    {
    }
}

ausfuehre, dann sagt mir meine JVM:

Code:
Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: java.lang.NullPointerException
	at Test.<clinit>(Test.java:6)

Damit laesst sich die Fehlerursache eigentlich ganz einfach finden.
 

Marcello

Mitglied
Also genaue Fehlermeldung:

Exception in thread "main" java.lang.ExceptionInInitializerError
at javax.swing.JPanel.updateUI(Unknown Source)
at javax.swing.JPanel.<init>(Unknown Source)
at javax.swing.JPanel.<init>(Unknown Source)
at javax.swing.JPanel.<init>(Unknown Source)
at javax.swing.JRootPane.createGlassPane(Unknown Source)
at javax.swing.JRootPane.<init>(Unknown Source)
at javax.swing.JFrame.createRootPane(Unknown Source)
at javax.swing.JFrame.frameInit(Unknown Source)
at javax.swing.JFrame.<init>(Unknown Source)
at gui.Fenster.<init>(Fenster.java:29)
at gui.Fenster.<init>(Fenster.java:42)
at gui.Fenster.<init>(Fenster.java:55)
at gui.Fenster.<init>(Fenster.java:69)
at Main.main(Main.java:26)
Caused by: java.lang.IllegalArgumentException: 636179 incompatible with Text-specific LCD contrast key
at java.awt.RenderingHints.put(Unknown Source)
at sun.awt.windows.WDesktopProperties.getDesktopAAHints(Unknown Source)
at sun.awt.windows.WToolkit.getDesktopAAHints(Unknown Source)
at sun.awt.SunToolkit.getDesktopFontHints(Unknown Source)
at sun.awt.windows.WDesktopProperties.setDesktopAAHints(Unknown Source)
at sun.awt.windows.WToolkit.initializeDesktopProperties(Unknown Source)
at java.awt.Toolkit.getDesktopProperty(Unknown Source)
at javax.swing.UIManager.<clinit>(Unknown Source)
... 14 more
 

Marcello

Mitglied
Ja hab die Importe und sowas weggelassen:

so sieht die Main komplett aus:

Code:
import gui.Fenster;

import java.awt.Color;
import java.awt.Rectangle;
import java.awt.Toolkit;

import javax.swing.ImageIcon;

/** Ist eine Verwaltung für Basketballmannschaften in verschiedenen Ligen.
 * @author 
 * @version 15.05.2007
 */
public class Main
{
	public static void main(String[] args)
	{
		/** Fenstereigenschafte festlegen **/
		String titel = "Basketballverwaltung";
		ImageIcon icon = new ImageIcon("icon/icon.jpg");
		Color farbe = Color.LIGHT_GRAY;
		int breite = 800;
		int hoehe = 700;
		Rectangle groesse = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize().width / 2 - (breite / 2), 
																			Toolkit.getDefaultToolkit().getScreenSize().height / 2 - (hoehe / 2), breite, hoehe);
		
		Fenster hauptfenster = new Fenster(titel, icon, groesse, farbe);
		hauptfenster.setVisible(true);
	}
}


Und hier die Fensterklasse komplett:

Code:
package gui;

import java.awt.Color;
import java.awt.Rectangle;

import javax.swing.ImageIcon;
import javax.swing.JFrame;

/** Ist ein Fenster, das mit den uebergebenen Eigenschaften erzeugt werden kann.
 * @author 
 * @version 16.06.2006
 */
public class Fenster extends JFrame
{

	/** Serielle Standard-Versions ID */
	private static final long serialVersionUID = 1L;
	
	/** Erstellt ein neues Fenster ohne spezifische Eigenschaften.
	 */
	public Fenster()
	{
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	
	/** Erstellt ein neues Fenster und setzt den Titel des Fensters auf den uebergebenen Wert.
	 * @param titel Der Titel des Fensters.
	 */
	public Fenster(String titel)
	{
		setTitle(titel);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	
	/** Erstellt ein neues Fenster, setzt den Titel des Fensters auf den uebergebenen Wert und bestimmt Position und Groesse des Fensters
	 *  aus den uebergebenen Werten.
	 * @param titel Der Titel des Fensters.
	 * @param groesse Die Groesse und Position des Fensters.
	 */
	public Fenster(String titel, Rectangle groesse)
	{
		this(titel);
		setBounds(groesse);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	
	/** Erstellt ein neues Fenster, setzt den Titel des Fensters auf den uebergebenen Wert, setzt das uebergebene Icon in die Titelleiste
	 *  und bestimmt Position und Groesse des Fensters aus den uebergebenen Werten.
	 * @param titel Der Titel des Fensters.
	 * @param icon Das Icon des Fensters.
	 * @param groesse Die Groesse und Position des Fensters.
	 */
	public Fenster(String titel, ImageIcon icon, Rectangle groesse)
	{
		this(titel, groesse);
		setIconImage(icon.getImage());
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	
	/** Erstellt ein neues Fenster, setzt den Titel des Fensters auf den uebergebenen Wert, setzt das uebergebene Icon in die Titelleiste,
	 *  bestimmt Position und Groesse des Fensters aus den uebergebenen Werten und setzt die Farbe des Fensters auf den uebergebenen Wert.
	 * @param titel
	 * @param icon
	 * @param groesse
	 * @param farbe
	 */
	public Fenster(String titel, ImageIcon icon, Rectangle groesse, Color farbe)
	{
		this(titel, icon, groesse);
		getContentPane().setBackground(farbe);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
}
 

Wildcard

Top Contributor
clear type power toy... das könnte wirklich eine erklärung sein. Oder einer dieser 'tollen' Windows Styles...
 

Marcello

Mitglied
also icon weglassen hat schonmal nichts geändert, die google sachen guck ich mir gleich mal in ruhe an, hab jetzt auf die schnelle nichts hilfreiches entdeckt.

danke schonmal für die mühe.


/ EDIT:

Wow also ganz ehrlich, ich waer auf ne Menge Sachen gekommen, aber das is kurios. Lag tatsächlich daran.
Hab es installiert und die Werte korrigiert und nun geht es einwandfrei.

Bin euch sehr dankbar, kann jetzt endlich weiterarbeiten!
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben