Interpreter-Fehler java.lang.ExceptionInInitializerError

Endymion

Bekanntes Mitglied
Ich schreibe momentan an einem kleinen Toolprogramm um Java zu üben und mal wieder ein Problem:
Folgendes Problem bei folgendem Sourcecode:
Java:
package main;
import java.io.FileNotFoundException;
import java.io.UnsupportedEncodingException;
import javax.swing.*;
import algebra.*;
import geometry.*;
import strings.*;
import java.awt.Color;
/**
 * The class which starts JTool.
 * @author Mario Trageser
 *
 */
public class Main
{
	private static boolean stop = false;
	private static final UserInterface userInterface = new UserInterface();
	public  static boolean isStop() 
	{
		return stop;
	}
	public static void setStop(boolean stop) 
	{
		Main.stop = stop;
	}
	public static UserInterface getUserInterface() 
	{
		return userInterface;
	}
	/**
	 * Starts the program.
	 * @param args
	 * @throws FileNotFoundException 
	 * @throws UnsupportedEncodingException 
	 */
	public static void main(String[] args) throws FileNotFoundException,
	UnsupportedEncodingException
	{
		while(!(stop))
		{
			starter();
		}
		System.exit(0);
	}
	/**
	 * Creates the main-class.
	 */
	/**
	 * Opens a window where a tool can be selected.
	 * @throws FileNotFoundException 
	 * @throws UnsupportedEncodingException 
	 */
	private static void starter() throws FileNotFoundException, 
	UnsupportedEncodingException
	{
		final String[] toolTypes = {"algebra", "geometry", "strings", "exit"};
		final int toolTypeNumber = Utils.selectTool(
				"Select the tool's type you want to use!", "select tool type",
				toolTypes);
		userInterface.addText(toolTypes[toolTypeNumber]);
		if(toolTypeNumber == 0)
		{
			final String[] toolList = {"calculator", "primality test", 
					"Collatz Sequence", "averager", "day of year", 
					"Pascals Trianglesorter"};
			final int toolNumber = Utils.selectTool(
					"Select the tool you want to use!", "tool selection", 
					toolList);
			userInterface.addText("-->" + toolList[toolNumber]);
			switch (toolNumber)
			{
			case 0:
				new Calculator();
				break;
			case 1:
				new PrimalityTest();
				break;
			case 2:
				new CollatzSequence();
				break;
			case 3:
				new Averager();
				break;
			case 4:
				new DayOfYear();
				break;
			case 5:
				new PascalsTriangle();
				break;
			case 6:
				new Sorter();
				break;
			}
		}
		if(toolTypeNumber == 1)
		{
			final String[] toolList = {"point distance calculator", 
					"polygon containing" +
					" test"};
			final int toolNumber = Utils.selectTool(
					"Select the tool you want to use!", "tool selection", 
					toolList);
			userInterface.addText("-->" + toolList[toolNumber]);
			switch (toolNumber)
			{
			case 0:
				new PointDistanceCalculator();
				break;
			case 1:
				new PolygonContainingTest();
				break;
			}
		}
		if(toolTypeNumber == 2)
		{
			final String[] toolList = {"anagram test", "String searcher", 
					"String splitter", "String encoder"};
			final int toolNumber = Utils.selectTool(
					"Select the tool you want to use!", "tool selection", 
					toolList);
			userInterface.addText("-->" + toolList[toolNumber]);
			switch (toolNumber)
			{
			case 0:
				new AnagramTest();
				break;
			case 1:
				new StringSearcher();
				break;
			case 2:
				new StringSplitter();
				break;
			case 3:
				new StringEncoder();
				break;
			}
		}
		if(toolTypeNumber == 3)
		{
			stop = Utils.yesNo("Do you want to exit JTool?", "exit");
		}
	}
}
Java:
package main;
import javax.swing.*;
import java.awt.Color;
/**
 * The graphical user interface  on which is shown a text.
 * @author Mario Trageser
 *
 */
public class UserInterface
{
	private final JLabel l;
	private final JFrame f;
	public JLabel getL() 
	{
		return l;
	}
	public JFrame getF() 
	{
		return f;
	}
	/**
	 * Creates an empty UserInterface.
	 */
	public UserInterface()
	{
		f = new JFrame("JTool");
		l = new JLabel();
		f.setBounds(0, 0, 275, 125);
		f.add(l);
		f.setVisible(true);
	}
	/**
	 * Sets the text.
	 * @param s The text.
	 */
	public void setText(String s)
	{
		l.setText(s);
	}
	/**
	 * Adds a text to the current text.
	 * @param s The text to be added.
	 */
	public void addText(String s)
	{
		setText(l.getText() + s);
	}
	/**
	 * Clears the text.
	 */
	public void clearText()
	{
		l.setText("");
	}
	/**
	 * Changes the text's color.
	 * @param c The text's color.
	 */
	public void setTextColor(Color c)
	{
		l.setForeground(c);
	}
}
Java:
package main;
import java.awt.*;
import java.util.regex.Pattern;
import javax.swing.*;
import java.io.*;
import java.util.Scanner;
/**
 * A class that contains methods which are used by several classes.
 * @author Mario Trageser
 *
 */
public class Utils
{
	private static UserInterface userInterface;
	private static JFrame f = userInterface.getF();
	public JFrame getF() 
	{
		return f;
	}
	public static void setUserInterface(UserInterface userInterface) 
	{
		Utils.userInterface = userInterface;
	}
	public UserInterface getUserInterface() 
	{
		return userInterface;
	}
	/**
	 * Returns an integer variable by opening a window where a number has to be
	 * entered.
	 * If the entered String is no number, you have to enter the number again.
	 * @param f The JFrame where the JOptionPane will be shown on.
	 * @param message The message which will be shown when you have to enter an
	 * number.
	 * @param title The title of the window where you have to enter a number.
	 * @return int
	 */
	public static int enterInt(String message, String title)
	{
		String s = JOptionPane.showInputDialog(f, message, title, 3).trim();
		boolean isInt = Pattern.matches("[1234567890]*", s);
		while (!(isInt))
		{
			if(!(isInt))
			{
				errorMessage(s + " is no number.", "not a number");
			}
			s = JOptionPane.showInputDialog(f, message, title, 3);
			isInt = Pattern.matches("[0-9]*", s);
		}
		final int i = Integer.parseInt(s);
		return i;
	}
	/**
	 * Creates an error message on a window.
	 * @param f The JFrame where the JOptionPane will be shown on.
	 * @param message The error message you will receive.
	 * @param title The error message's title.
	 */
	public static void errorMessage(String message, String title)
	{
		JOptionPane.showMessageDialog(f, "error", title, 0 );
		userInterface.setText(message);
		userInterface.setTextColor(Color.RED);
	}
	/**
	 * Creates a numbered Point with x and y coordinates which have to be 
	 * entered.
	 * @param f The JFrame where the window where you have to enter the Point's
	 * coordinates will be shown on.
	 * @param continuous The Point's number.
	 * @return java.awt.Point
	 */
	public static Point newPoint(int continuous)
	{
		final int xCoordinate = Utils.enterInt("Enter the point" +
				continuous + "'s x-coordinate!", "x-coordinate");
		if(xCoordinate < 0)
		{
			Utils.errorMessage("The coordinates have to be positiv.",
					"coordinate negativ");
			newPoint(continuous);
		}
		final int yCoordinate = Utils.enterInt("Enter the point" +
				continuous + "'s y-coordinate!", "y-coordinate");
		if(yCoordinate < 0)
		{
			Utils.errorMessage("The coordinates have to be positiv.", 
					"coordinate negativ");
			newPoint(continuous);
		}
		final Point p = new Point(xCoordinate, yCoordinate);
		return p;
	}
	/**
	 * Creates a Point with x and y coordinates which have to be entered.
	 * @param f The JFrame where the window where you have to enter the Point's
	 * coordinates will be shown on.
	 * @return java.awt.Point
	 */
	public static Point newPoint()
	{
		final int xCoordinate = Utils.enterInt(
				"Enter the point's x-coordinate!", "x-coordinate");
		if(xCoordinate < 0)
		{
			Utils.errorMessage("The coordinates have to be positiv.", 
					"coordinate negativ");
			newPoint();
		}
		final int yCoordinate = Utils.enterInt(
				"Enter the point's y-coordinate!", "y-coordinate");
		if(yCoordinate < 0)
		{
			Utils.errorMessage("The coordinates have to be positiv.", 
					"coordinate negativ");
			newPoint();
		}
		final Point p = new Point(xCoordinate, yCoordinate);
		return p;
	}
	/**
	 * Creates a window where you have to select a tool.
	 * @param f The JFrame where the JOptionPane where you have to select the 
	 * tool will be shown on.
	 * @param text The text which is shown when you have to select a tool.
	 * @param title The title which is shown on the window where you have to
	 * select the tool. 
	 * @param options The options for the tool selection.
	 * @return
	 */
	public static int selectTool(String text, String title, String[] options)
	{
		final int toolNumber = JOptionPane.showOptionDialog(f, text, title, 0, 3, null, options, null);
		return toolNumber;
	}
	/**
	 * Creates a window where yes or no can be selected.
	 * @param f The JFrame where the window is shown on.
	 * @param text The text which is shown on the window.
	 * @param title The window's title.
	 * @return int
	 */
	public static boolean yesNo(String text, String title)
	{
		boolean b = false;
		String[] yesNo = {"yes", "no"};
		final int i = selectTool(text, title, yesNo);
		if(i == 0)
			b = true;
		return b;
	}
	/**
	 * Opens a window where you have to enter a String.
	 * @param message
	 * @return
	 */
	public static String enterString(JFrame f, String message)
	{
		final String s = JOptionPane.showInputDialog(f, message, "enter string",
				3);
		return s;
	}
	/**
	 * Opens a window where a regular expression has to be selected.
	 * @return String
	 */
	public static String selectRegularExpression()
	{
		String regularExpression = "";
		final String[] regularExpressions = {"character", "number",
				"whitespace",  "letter", "blank/tab", "lowercase letter",
				"uppercase letter", "alphanumeric character", "point character",
				"printable letter"};
		final String[] includes = {"yes","no"};
		final int kindOfExpression = Utils.selectTool(
				"Select the kind of regular expression you want to search?",
				"select regular expression", regularExpressions);
		switch(kindOfExpression)
		{
		case 0:
			regularExpression = "\\.";
			break;
		case 1:
			regularExpression = "\\d";
			break;
		case 2:
			regularExpression = "\\s";
			break;
		case 3:
			regularExpression = "\\w";
			break;
		case 4:
			regularExpression = "\\p{Blank}";
			break;
		case 5:
			regularExpression = "\\p{Lower}";
			break;
		case 6:
			regularExpression = "\\p{Upper}";
			break;
		case 7:
			regularExpression = "\\p{Alnum}";
			break;
		case 8:
			regularExpression = "\\p{Punct}";
			break;
		case 9:
			regularExpression = "\\p{Print}";
			break;
		}
		final int included = Utils.selectTool(
				"Should the regular expression be included or not?",
				"included?", includes);
		if(included == 1)
		{
			switch (kindOfExpression)
			{
			case 0:
				regularExpression = "^\\.";
				break;
			case 1:
				regularExpression = "^\\d";
				break;
			case 2:
				regularExpression = "^\\s";
				break;
			case 3:
				regularExpression = "^\\w";
				break;
			case 4:
				regularExpression = "^\\p{Blank}";
				break;
			case 5:
				regularExpression = "^\\p{Lower}";
				break;
			case 6:
				regularExpression = "^\\p{Upper}";
				break;
			case 7:
				regularExpression = "^\\p{Alnum}";
				break;
			case 8:
				regularExpression = "^\\p{Punct}";
				break;
			case 9:
				regularExpression = "\\p{Print}";
				break;
			}
		}
		return regularExpression;
	}
	/**
	 * Returns an entered String or a by a path selected to String converted 
	 * text-file.
	 * @param f The JFrame where the String or the path have to be entered.
	 * @param message The message that is shown when the String or the path have
	 *  to be entered.
	 * @return String
	 * @throws FileNotFoundException
	 */
	public static String enterFileOrString(String message)
	throws FileNotFoundException
	{
		final String[] stringOptions = {"entered String", ".txt-file"};
		String s = "";
		final int i = Utils.selectTool(
				"Which kind of string do you want to use?",
				"select kind of string", stringOptions);
		if(i == 0)
			s = enterString(f, message);
		else
		{
			message = message.replace("string", ".txt-file's path");
			final String path = JOptionPane.showInputDialog(f, message,
					"enter path", 4).replace("\\", "/");
			final Scanner scanner = new Scanner(new File(path));
			while(scanner.hasNextLine())
				s += scanner.nextLine();
			System.out.println(s);
		}
		return s;
	}
}
Beim Ausführen bekomme ich folgende Fehlermeldung:
Exception in thread "main" java.lang.ExceptionInInitializerError
at main.Main.starter(Main.java:57)
at main.Main.main(Main.java:41)
Caused by: java.lang.NullPointerException
at main.Utils.<clinit>(Utils.java:15)
... 2 more
Ich weiß nicht, was ein ExceptionInInitializerError ist, vielleicht kann mir das ja jemand erklären, im Idealfall sogar ohne Link zu einer englischsprachigen Seite, sondern in verständlichem Deutsch. Im Idealfall sogar mit problemlösung. Danke im Vorraus :)
 

XHelp

Top Contributor
Die Zeilenangaben sind ja recht eindeutig ;)
Du kannst nicht userInterface benutzen (Zeile 15) solange es noch nicht initialisiert ist.
 

XHelp

Top Contributor
[JAVA=14] private static UserInterface userInterface;
private static JFrame f = userInterface.getF();[/code]
userInterface ist da noch nicht initialisiert.
 

Endymion

Bekanntes Mitglied
Ah ok, wir haben das in der Schule anders herum gelernt. Aber selbst wenn, f wird doch erst initialisiert, wenn Utils zum ersten mal geladen wird, was dann bei selectTool passiert. Wenn ich selectTool verwende, habe ich userInterface doch schon erstellt, also sollte es doch zu keinem Fehler führen.
 

XHelp

Top Contributor
Nö. f ist static und darauf wird schon beim Laden der Klasse zugegriffen. Aber initialisieren tust du es erst zur Laufzeit später. Da kommt auch der Fehler her.
 

XHelp

Top Contributor
Könntest ja ggf auf die Instanz von userInterface aus der Main zurückgreifen. Aber so viele statischen Methoden sprechen für schlechtes Design, da wirst du ständig irgendwelche komischen Sachen machen müssen, damit alles irgendwie funktioniert.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H java.lang.ExceptionInInitializerError Allgemeine Java-Themen 7
P Fehler: Hauptklasse Main konnte nicht gefunden oder geladen werden Ursache: java.lang.ClassNotFoundException: Main Allgemeine Java-Themen 24
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
G java.lang.NoClassDefFoundError: org/aspectj/lang/Signature Allgemeine Java-Themen 2
P9cman java.Lang Klassen fehlen in JRE System Library Allgemeine Java-Themen 1
F Fehlermeldung: java.lang.NoClassDefFoundError: org/apache/commons/net/ntp/NTPUDPClient Allgemeine Java-Themen 6
P Swing Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: npoints > xpoints.length || npoints > ypoints.length Allgemeine Java-Themen 5
S Exception in thread "main" java.lang.NullPointerException at FamilienApp.main(FamilienApp.java:15) Allgemeine Java-Themen 1
E HILFE !! Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/io/FileUtils Allgemeine Java-Themen 4
J Threads - java.lang.IllegalThreadStateException Allgemeine Java-Themen 6
javaerd Binomialkoeffizient ausrechnen, Exception in thread "main" java.lang.StackOverflowError Allgemeine Java-Themen 6
T Eclipse Dll einbinden java.lang.UnsatisfiedLinkError nur in Eclipse nicht via javac Allgemeine Java-Themen 1
V Compiler-Fehler Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 125, Size: 125 Allgemeine Java-Themen 11
J Exception in thread "main" java.lang.NoClassDefFoundError Allgemeine Java-Themen 4
H Java Mail Fehlermeldung: java.lang.NoClassDefFoundError: javax/mail/internet/AddressException Allgemeine Java-Themen 5
Crooda Compiler-Fehler java.lang.NoClassDefFoundError bitcoinj Allgemeine Java-Themen 1
I Fehler java.lang.NullPointerException Allgemeine Java-Themen 5
L Eigenener ClassLoader wirft java.lang.NoClassDefFoundError Allgemeine Java-Themen 0
H java.lang.NullPointerException Allgemeine Java-Themen 5
L Interpreter-Fehler java.lang.NullPointerException Allgemeine Java-Themen 17
F java.lang.ClassNotFoundException: .class Allgemeine Java-Themen 5
S java.lang.NoClassDefFoundError Allgemeine Java-Themen 5
J Compiler-Fehler java.lang.StringIndexOutOfBoundsException Allgemeine Java-Themen 12
D java.lang.TypeNotPresentException Allgemeine Java-Themen 3
A java.lang.NullPointerException bei Schleife Allgemeine Java-Themen 3
L java.lang.OutOfMemoryError: Java heap space Allgemeine Java-Themen 10
S javadoc java.lang.NullPointerException Allgemeine Java-Themen 2
H java.lang.OutOfMemoryError bei der wiederholten Erzeugng von Threads Allgemeine Java-Themen 8
B Variable class in java.lang.Object Allgemeine Java-Themen 11
N java.lang.IllegalMonitorStateException: object not locked by thread before notify() Allgemeine Java-Themen 2
T ProcessBuilder (java.lang.NoClassDefFoundError) Allgemeine Java-Themen 2
T java.lang.AssertionError: Allgemeine Java-Themen 4
T java.lang.ClassCastException: Allgemeine Java-Themen 4
P Java Probleme - java.lang.Thread.run(Unkown Source) Allgemeine Java-Themen 10
B java.lang.UnsupportedClassVersionError Allgemeine Java-Themen 12
M cannot be cast to java.lang.Comparable Allgemeine Java-Themen 5
B JNI - java.lang.UnsatisfiedLinkError Allgemeine Java-Themen 21
C java.lang.ClassCastException Allgemeine Java-Themen 3
P Fehler beim Programmstart: java.lang.NoClassDefFound Allgemeine Java-Themen 12
T java.lang.ClassCastException Allgemeine Java-Themen 7
B Java - java.lang Allgemeine Java-Themen 12
sylo java.lang.NoSuchMethodError: Obwohl Methode vorhanden Allgemeine Java-Themen 8
MonsterBit java.lang.NullPointerException Allgemeine Java-Themen 2
H Applet java.lang.reflect.InvocationTargetException Allgemeine Java-Themen 9
M SerialPort RS232 : java.lang.NoSuchFieldError: eis Allgemeine Java-Themen 2
U java.lang.ClassNotFoundException: .jar Allgemeine Java-Themen 8
G NoClassDefFoundError: java/lang/Object Allgemeine Java-Themen 4
W java.lang.ClassCastException Allgemeine Java-Themen 10
N Exception in thread "main" java.lang.UnsatisfiedLinkError: no lwjgl in java.library.p Allgemeine Java-Themen 4
N java.lang.InstantiationException Allgemeine Java-Themen 10
J java.lang.NullPointerException bei Threadprogrammierung Allgemeine Java-Themen 9
D replaceAll => no such java.lang.NoSuchMethodError Allgemeine Java-Themen 5
G java.lang.LinkageError: loader constraints violation. Allgemeine Java-Themen 3
O java.lang.NumberFormatException für normalen integer Allgemeine Java-Themen 4
G Javadoc generiert keine Links zu java.lang Klassen? Allgemeine Java-Themen 4
Y java.lang.UnsupportedClassVersionError: Allgemeine Java-Themen 5
G java.lang.ClassCastException Allgemeine Java-Themen 3
J Fehler: java.lang.NullPointerException Allgemeine Java-Themen 2
E java.lang.outofmemory über windows-cmd ändern Allgemeine Java-Themen 6
J Folgender Fehler: java.lang.NullPointerException Allgemeine Java-Themen 4
I java.lang.UnsatisfiedLinkError: Allgemeine Java-Themen 8
J Exception in thread "main" java.lang.OutOfMemoryEr Allgemeine Java-Themen 26
J java.lang.StackOverflowError Debugging? Allgemeine Java-Themen 51
D java.lang.UnsatisfiedLinkError Allgemeine Java-Themen 5
S Fortran Funktion mit JNI aufrufen: java.lang.UnsatisfiedLink Allgemeine Java-Themen 2
S java.lang.UnsatisfiedLinkError mit JNI Allgemeine Java-Themen 6
reibi java.lang.Class - Resource - Solaris Allgemeine Java-Themen 17
S Exception in Thread "main" java.lang.NoClassDef. b Allgemeine Java-Themen 2
M java.lang.UnsupportedClassVersionError: Bad version number i Allgemeine Java-Themen 5
J java Thread java.lang.OutOfMemoryError: Java heap space Allgemeine Java-Themen 7
O "AWT-EventQueue-1" java.lang.ArrayIndexOutOfBounds Allgemeine Java-Themen 6
B Exception in thread "main" java.lang.NoClassDefFou Allgemeine Java-Themen 12
G Error: java.lang.OutOfMemoryError: Java heap space Allgemeine Java-Themen 2
S java.lang.OutOfMemoryError: Java Allgemeine Java-Themen 22
G java.lang.NullPointerException JFreeChart Allgemeine Java-Themen 5
E Java Fehlermeldung java.lang.NoClassDefFoundError Allgemeine Java-Themen 3
G Problem mit java.lang.reflect.Field Allgemeine Java-Themen 15
P Kompilerfehler: at java.lang.ClassLoader.loadClassInternal(U Allgemeine Java-Themen 16
M java.lang.NullPointerException im Chatclient Allgemeine Java-Themen 12
D java.lang.IllegalMonitorStateException: current thread not Allgemeine Java-Themen 3
P Exception in thread "main" java.lang.NoClassDefFou Allgemeine Java-Themen 3
P Exception in thread "main" java.lang.NoClassDefFou Allgemeine Java-Themen 15
P Exception in thread "main" java.lang.NoClassDefFou Allgemeine Java-Themen 3
T Profifrage: java.lang.StackOverflowError bei BigInteger Allgemeine Java-Themen 27
M java.lang.OutOfMemoryError Allgemeine Java-Themen 2
W java.lang.ClassNotFoundException Allgemeine Java-Themen 10
F java.lang.OutOfMemoryError: Java heap space Allgemeine Java-Themen 22
B Exception in thread "main" java.lang.OutOfMemoryEr Allgemeine Java-Themen 5
S fehlermeldung java.lang.OutOfMemoryError Allgemeine Java-Themen 5
B java.lang.NullPointerException Allgemeine Java-Themen 11
S Exception in thread "main" java.lang.StringIndexOu Allgemeine Java-Themen 9
H Skalieren von Image -> java.lang.OutOfMemoryError - WARUM Allgemeine Java-Themen 18
J java.lang.ArrayIndexOutOfBoundsException Allgemeine Java-Themen 2
P Hilfe zu java.lang.Object Allgemeine Java-Themen 3
K java.lang.reflect - Getter und Setter ermitteln Allgemeine Java-Themen 8
G jTable-Problem --> java.lang.OutOfMemoryError Allgemeine Java-Themen 5
G Java.lang.Compiler Allgemeine Java-Themen 3
E Exception in Thread "main" java.lang.NoClassDefFou Allgemeine Java-Themen 5
F java.lang.OutOfMemoryError Allgemeine Java-Themen 13
R java.lang.String maximale Anzahl der Zeichen Allgemeine Java-Themen 7

Ähnliche Java Themen

Neue Themen


Oben