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

(Klammer fehlt)
(Doppelte Deklaration)
Zeile 15: Zeile 15:
 
* Bei Klammerfehlern solltet ihr nach jedem korrigierten Fehler neukompilieren, da es normalerweise zu sehr vielen Folgefehlern kommt.
 
* Bei Klammerfehlern solltet ihr nach jedem korrigierten Fehler neukompilieren, da es normalerweise zu sehr vielen Folgefehlern kommt.
  
 +
 +
 
 
==Doppelte Deklaration==
 
==Doppelte Deklaration==
 
  bruja shabanov 11 (Desktop/JavaKurs): javac Errors.java Errors.java:5: i is already defined in main(java.lang.String[])
 
  bruja shabanov 11 (Desktop/JavaKurs): javac Errors.java Errors.java:5: i is already defined in main(java.lang.String[])

Version vom 12. April 2007, 11:53 Uhr

Häufige Java Fehler mit Hilfe

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.