Sitzung: Jeden Freitag in der Vorlesungszeit ab 16 Uhr c. t. im MAR 0.005. In der vorlesungsfreien Zeit unregelmäßig (Jemensch da?). Macht mit!

Javakurs/Übungsaufgaben/Errors: Unterschied zwischen den Versionen

(Häufige Java Fehler mit Hilfe)
('''LaufzeitFehler''')
Zeile 81: Zeile 81:
 
* Heisst Java kann die Klasse nicht finden, die ihr ausführen wollt.
 
* Heisst Java kann die Klasse nicht finden, die ihr ausführen wollt.
 
* Schaut '''genau''' nach ob der Dateiname und der Klassennamme gleich sind. Dabei ist auch wichtig die Groß/Klein Schreibung zu beachten. Ausserdem achtet darauf ob ihr in die Konsole die richtigen Namen eingetippt habt.
 
* Schaut '''genau''' nach ob der Dateiname und der Klassennamme gleich sind. Dabei ist auch wichtig die Groß/Klein Schreibung zu beachten. Ausserdem achtet darauf ob ihr in die Konsole die richtigen Namen eingetippt habt.
 
+
 +
 
==java.lang.NoSuchMethodError==
 
==java.lang.NoSuchMethodError==
 
  bruja shabanov 9 (Desktop/JavaKurs): java Errors
 
  bruja shabanov 9 (Desktop/JavaKurs): java Errors
 
  Exception in thread "main" java.lang.NoSuchMethodError: main
 
  Exception in thread "main" java.lang.NoSuchMethodError: main
* Java Findet eine Methode nicht ( hier speziell die main Methode )
+
* Java findet eine Methode nicht ( hier speziell die main Methode )
 
* Schaut ob ihr beim Aufruf den Methodennamen richtig geschrieben habt.
 
* Schaut ob ihr beim Aufruf den Methodennamen richtig geschrieben habt.
 +
 +
 +
==java.lang.ArrayIndexOutOfBoundsException==
 +
bruja shabanov 8 (Desktop/JavaKurs): java Errors
 +
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
 +
        at Errors.main(Errors.java:5)
 +
*Ihr versucht auf ein Array Feld zuzugreifen, was ausserhalb der Größe des Arrays liegt.
 +
*Sucht in der angegeben Zeile nach dem Zugriff auf das Array und erweitert notfalls die Größe des Arrays.

Version vom 12. April 2007, 11:58 Uhr

CompilerFehler

Klammer fehlt

bruja shabanov 10 (Desktop/JavaKurs): javac Errors.java
Errors.java:7: '}' expected
^
1 error
  • Es fehlt einfach eine geschweifte Klammer.
  • Jedes mal wenn ihr eine geschweifte Klammer aufmacht, macht sie gleich wieder zu, damit ihrs später nicht vergesst.
  • Bei Klammerfehlern solltet ihr nach jedem korrigierten Fehler neukompilieren, da es normalerweise zu sehr vielen Folgefehlern kommt.

Doppelte Deklaration

bruja shabanov 11 (Desktop/JavaKurs): javac Errors.java Errors.java:5: i is already defined in main(java.lang.String[])
                for( int i = 0 ; i < 10 ; i++ ){
                         ^
1 error
  • Die Variable i ist irgendwo bereits definiert gewesen. Sucht also vor dieser Zeile nach einem:
int i = ..
  • Ihr müsst dann den Variablennamen in der Schleife z.B. ändern.


Definition fehlt

bruja shabanov 5 (Desktop/JavaKurs): javac Errors.java
Errors.java:15: variable ret might not have been initialized
                return ret;
                       ^
1 error
  • Ihr habt eine Variable nicht richtig initialisiert, das passiert oft wenn ihr einer Variable innerhalb einer if-Anweisung Werte zuweist, wie in diesem Code ( der zudem obigen Fehler führt ):
	public static String someMethod( int x ){
		String ret;
		if( x ==  4711 ){
			ret = "foobar";
		}
		return ret;
	}
  • Die Variable ret bekommt nur dann einen Wert zugeordnet wenn x == 4711 gilt, da dies nicht immer der Fall sein muss, könnte der Fall auftreten, dass ret gar keinen Wert zugeordnet bekommt.
  • Fügt einen default Wert für ret hinzu um diesen Fehler zu beheben, z.B. so:
 		String ret = "";


Missing return statement

bruja shabanov 6 (Desktop/JavaKurs): javac Errors.java
Errors.java:17: missing return statement
        }
        ^
1 error
  • Ihr habt in einer Methode, die etwas zurückgeben soll entweder das return vergessen, oder das return steht nur innerhalb von if Anweisungen, wie hier:
	public static boolean isPositive( int num ){
		if( num > 0 ){
			return true;
		}else if( num < 0 ){
			return false;
		}			
	}
  • Da alle returns in einem if Block stehen, könnte es theoretisch sein, dass keiner der Blöcke ausgeführt wird und Java somit nicht weiss was es zurück geben soll.
  • Fügt um das Problem zu Lösen ein return am Ende euerer Mthode ein, oder ändert ein else if in ein else.
       public static boolean isPositive( int num ){
		if( num > 0 ){
			return true;
		}else if( num < 0 ){
			return false;
		}			
		return false;
	}

LaufzeitFehler

java.lang.NoClassDefFoundError

bruja shabanov 7 (Desktop/JavaKurs): java Errors
Exception in thread "main" java.lang.NoClassDefFoundError: Errors
  • Heisst Java kann die Klasse nicht finden, die ihr ausführen wollt.
  • Schaut genau nach ob der Dateiname und der Klassennamme gleich sind. Dabei ist auch wichtig die Groß/Klein Schreibung zu beachten. Ausserdem achtet darauf ob ihr in die Konsole die richtigen Namen eingetippt habt.


java.lang.NoSuchMethodError

bruja shabanov 9 (Desktop/JavaKurs): java Errors
Exception in thread "main" java.lang.NoSuchMethodError: main
  • Java findet eine Methode nicht ( hier speziell die main Methode )
  • Schaut ob ihr beim Aufruf den Methodennamen richtig geschrieben habt.


java.lang.ArrayIndexOutOfBoundsException

bruja shabanov 8 (Desktop/JavaKurs): java Errors
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
        at Errors.main(Errors.java:5)
  • Ihr versucht auf ein Array Feld zuzugreifen, was ausserhalb der Größe des Arrays liegt.
  • Sucht in der angegeben Zeile nach dem Zugriff auf das Array und erweitert notfalls die Größe des Arrays.