Fehlermeldungen in Java

Fehlermeldungen in der Konsole beim Kompilieren und Ausführen von Code sind nicht immer selbsterklärend. Um einen besseren Überblick zu haben, was die Fehler bedeuten und wie man diese beheben kann, werden hier die am häufigsten auftretenden Fehler aufgelistet.

Je nach verwendeter Java-Version können die Meldungen auf Englisch oder Deutsch erscheinen.

Was tun, wenn ich dennoch nicht weiter weiß?

Nachschlagen der Fehlermeldung:
Dafür kann auch der in 5Code integrierte Browser verwendet werden.

Nachfragen bei den Tutor*innen:
Wenn sonst keine Lösung gefunden werden kann und die Mitstudierenden auch nicht weiter wissen, sind die Tutor*innen immer bereit zu helfen.

Kompilier-Fehler

Array erforderlich, aber <X> gefunden

Auf Englisch: array required, but <X> found

array required but String found
    String b = a[0];
            ^

Mögliche Fehlerursachen

Mögliche Lösungen

ERROR_array_required

Symbol nicht gefunden

Auf Englisch: cannot find symbol

cannot find symbol
    positionX = x;
    ^
symbol: variable positionX
location: class Block

Mögliche Fehlerursachen

Mögliche Lösungen

Hinweis:

Die Suche kann dabei helfen, eine Variable und ihre Nutzung schneller wiederzufinden.

ERROR_cannot_find_symbol

class, interface, enum oder record erwartet

Auf Englisch: class, interface, enum, or record expected

class, interface, enum, or record expected
  }
  ^

Mögliche Fehlerursachen

Mögliche Lösungen

Hinweis:

Die überschüssigen Klammern befinden sich bei diesem Fehler meist am Ende des Codes. Eine angemessene Einrückung des Codes kann dabei helfen, den Fehler zu finden und zu vermeiden.

ERROR_class_expected

Klasse, Schnittstelle, Annotationstyp, Enumeration, Datensatz, Methode oder Feld erwartet

Auf Englisch: class, interface, annotation type, enum, record, method or field expected

class, interface, annotation type, enum, record, method or field expected
publi void begruessung(String name) {
^

Mögliche Fehlerursachen

Mögliche Lösungen

ERROR_class_interface_expected

Ungültige Methodendeklaration. Rückgabetyp erforderlich

Auf Englisch: invalid method declaration; return type required

invalid method declaration; return type required
begruessung(String name) {
^

Mögliche Fehlerursachen

Mögliche Lösungen

ERROR_invalid_method_declaration

abc

Klasse <X> ist öffentlich und muss in einer Datei namens <X>.java deklariert werden

Auf Englisch: class <X> is public, should be declared in a file named <X>.java

class Block is public, should be declared in a file named Block.java
public class Block {
       
^

Mögliche Fehlerursachen

Mögliche Lösungen

Hinweis:

Beim Umbenennen einer Klasse muss auch immer die entsprechende Datei umbenannt werden. 5Code ändert beim Umbenennen der Datei auch automatisch den Klassennamen.

ERROR_class_file_name

Doppeltes CASE-Label

Auf Englisch: duplicate case label

duplicate case label
    case 's': ausgabe = "Daten werden gespeichert";
    ^

Mögliche Fehlerursachen

Mögliche Lösungen

Hinweis:

Achten Sie beim Kopieren und Einfügen aus anderer Stelle, den Code an allen relevanten Stellen anzupassen. (Bestenfalls vermeiden Sie Copy & Paste!)

ERROR_duplicate_case_label

"else" ohne "if"

Auf Englisch: 'else' without 'if'

'else' without 'if'
    else {
    ^

Mögliche Fehlerursachen

Mögliche Lösungen

ERROR_else_without_if

Unzulässiger Ausdrucksbeginn/Typbeginn

Auf Englisch: illegal start of expression/type

illegal start of expression
    void dreheAufWinkel(int winkel) {
    ^
illegal start of type
    return str;
    ^

Mögliche Fehlerursachen

Mögliche Lösungen

Hinweis:

Eine angemessene Einrückung des Codes kann dabei helfen, den Fehler zu finden und zu vermeiden. Die Fehlerursache kann mit großer Wahrscheinlichkeit in den voranstehenden Zeilen des Fehlers gefunden werden.

ERROR_illegal_start

Inkompatible Typen

Auf Englisch: incompatible types

incompatible types: String cannot be converted to int
    int a = "a";
            ^
incompatible types: possible lossy conversion from double to int
    int x = Math.pow(2,4);
                    ^

Mögliche Fehlerursachen

Mögliche Lösungen

Hinweis:

Gleitkomma-Zahlen können auch in Integer umgewandelt werden, z.B. int pi = (int)3.14159.Dabei werden die Werte gerundet. Strings, die aus Zahlen bestehen, können auch umgewandelt werden, z.B. Integer.parseInt("500").

ERROR_incompatible_types

Ungültige Methodendeklaration. Rückgabetyp erforderlich

Auf Englisch: invalid method declaration; return type required

invalid method declaration; return type required
    public toString() {
           ^

Mögliche Fehlerursachen

Mögliche Lösungen

Hinweis:

Auch wenn die Methode keinen Wert zurück gibt, muss sie explizit als "void" deklariert werden.

ERROR_return_type

Methode <x> ist bereits in Klasse <y> definiert

Auf Englisch: method <x> is already defined in class <y>

method toString() is already defined in class Block
    public String toString() {
                  ^

Mögliche Fehlerursachen

Mögliche Lösungen

ERROR_method_already_defined

Methode <X> in Klasse <Y> kann nicht auf die angegebenen Typen angewendet werden

Auf Englisch: method <X> in class <Y> cannot be applied to given types

method positioniereAuf in class Block cannot be applied to given types;
    block.positioniereAuf(2);
         ^
required: int,int
found:    int
reason: actual and formal argument lists differ in length

Mögliche Fehlerursachen

Mögliche Lösungen

Hinweis:

Die Fehlermeldung gibt im Detail an, welche Parameter erwartet werden und welche angegeben wurden. Die Suche kann dabei helfen, die Definition der Methode schneller wiederzufinden.

ERROR_cannot_be_applied_to_types

Rückgabeanweisung fehlt

Auf Englisch: missing return statement

missing return statement
    }
    ^

Mögliche Fehlerursachen

Mögliche Lösungen

Hinweis:

Werden unter bestimmten Bedingungen (if) verschiedene Werte zurückgegeben, müssen die anderen Bedingungen mit "else if" eingeleitet werden. Sonst kann der Compiler nicht sichergehen, dass in jedem Fall etwas zurückgegeben wird.

ERROR_missing_return

Variable <X> ist nicht statisch und kann nicht aus einem statischen Kontext referenziert werden

Auf Englisch: non-static variable <X> cannot be referenced from a static context

non-static variable name cannot be referenced from a static context
    name = "Alice";
    ^

Mögliche Fehlerursachen

Mögliche Lösungen

ERROR_non_static_variable

Keine Anweisung

Auf Englisch: not a statement

not a statement
    abc
    ^

Mögliche Fehlerursachen

Mögliche Lösungen

ERROR_not_a_statement

Package <X> ist nicht vorhanden

Auf Englisch: package <X> does not exist

package aufgaben does not exist
    import aufgaben.*;
    ^
package system does not exist
    system.out.println("Hello world");
          ^

Mögliche Fehlerursachen

Mögliche Lösungen

ERROR_package_does_not_exist

Dateiende beim Parsen erreicht

Auf Englisch: reached end of file while parsing

reached end of file while parsing
    }
     ^

Mögliche Fehlerursachen

Mögliche Lösungen

Hinweis:

Eine angemessene Einrückung des Codes kann dabei helfen, den Fehler zu finden und zu vermeiden.

ERROR_end_of_file

Nicht geschlossenes Zeichenliteral

Auf Englisch: unclosed character literal

unclosed character literal char
    zeichen = 'a;
              ^

Mögliche Fehlerursachen

Mögliche Lösungen

ERROR_unclosed_character_literal

Nicht erreichbare Anweisung

Auf Englisch: unreachable statement

unreachable statement
    System.out.println(str);
    ^

Mögliche Fehlerursachen

Mögliche Lösungen

ERROR_unreachable_statement

uses unchecked or unsafe operations

Note: [...]\Super.java uses unchecked or unsafe operations.

Wie kommt diese Warnung zustande?

Wie kann ich diese Warnung lösen?

ERROR_unsafe_operations

Variable <x> wurde möglicherweise nicht initialisiert

Auf Englisch: variable <x> might not have been initialized

variable str might not have been initialized
    System.out.println(str);
                       ^

Mögliche Fehlerursachen

Mögliche Lösungen

Hinweis:

Werden Variablen unter bestimmten Bedingungen (if) initialisiert, müssen die anderen Bedingungen mit "else if" eingeleitet werden. Sonst kann der Compiler nicht sichergehen, dass die Variable in jedem Fall initialisiert wird.

ERROR_var_not_initialized

Variable <x> ist bereits in Methode <y> definiert

Auf Englisch: variable <x> is already defined in method <y>

variable a is already defined in method main(String[])
    int a = 9;
       ^

Mögliche Fehlerursachen

Mögliche Lösungen

Hinweis:

Innerhalb eines Blocks sind gleiche Namen für Variablen nicht erlaubt, auch wenn sie unterschiedliche Typen haben.

ERROR_var_already_defined

<ID> erwartet

Auf Englisch: <identifier> expected

<identifier> expected
    System.out.println("Hello world");
                      ^

Mögliche Fehlerursachen

Mögliche Lösungen

Hinweis:

Eine angemessene Einrückung des Codes kann dabei helfen, den Fehler zu finden und zu vermeiden.

ERROR_identifier_expected

<X> erwartet

Auf Englisch: <X> expected

';' expected
    position
X = 0
                  ^

Mögliche Fehlerursachen

Mögliche Lösungen

ERROR_expected

<X> hat private-Zugriff in <Y>

Auf Englisch: <X> has private access in <Y>

name has private access in Person
    String name = person.name;
                        ^

Mögliche Fehlerursachen

Mögliche Lösungen

ERROR_private_access

<X> in <Y> ist veraltet

Auf Englisch: <X> in <Y> has been deprecated

[deprecation] stop() in Thread has been deprecated
    t.stop();
     ^
[removal] Integer(int) in Integer has been deprecated and marked for removal
    Integer i = new Integer(5);
               ^

Wie kommt diese Warnung zustande?

Wie kann ich diese Warnung lösen?

ERROR_deprecation

Ungültiger Operandentyp <X> für unären Operator "<Y>"

Auf Englisch: bad operand type <X> for unary/binary operator '<Y>'

bad operand type boolean for unary operator '++'
        bool++;
            ^

Mögliche Fehlerursachen

Mögliche Lösungen

ERROR_bad_operand

Nicht vergleichbare Typen: <X> und <Y>

Auf Englisch: incomparable types: <X> and <Y>

incomparable types: boolean and int
        boolean bool3 = bool == 8;
                             ^

Mögliche Fehlerursachen

Mögliche Lösungen

ERROR_incomparable_types

Unbenannte Klassen sind ein Vorschaufeature, das standardmäßig deaktiviert ist.

Auf Englisch: unnamed classes are a preview feature and are disabled by default.

unnamed classes are a preview feature and are disabled by default.
    void hello() {
    ^

Mögliche Fehlerursachen

Mögliche Lösungen

ERROR_unnamed_classes

Doppelte Klasse: X

Auf Englisch: duplicate class: X

duplicate class: Test
class Test {
^

Mögliche Fehlerursachen

Mögliche Lösungen

ERROR_duplicate_class

Arraydimension fehlt

Auf Englisch: array dimension missing

array dimension missing
        int[] numbers = new int[];
                                 ^

Mögliche Fehlerursachen

Mögliche Lösungen

ERROR_array_dimension_missing

".class" erwartet

Auf Englisch: '.class' expected

'.class' expected
        this.zahl = int _zahl;
                             ^

Mögliche Fehlerursachen

Mögliche Lösungen

ERROR_dot_class_expected

Kompakte Quelldatei weist keine Hauptmethode im Format "void main()" oder "void main(String[] args)" auf

Auf Englisch: compact source file does not have main method in the form of void main() or void main(String[] args)

void mains() {
^

Mögliche Fehlerursachen

Mögliche Lösungen

ERROR_compact_source_file_main

Laufzeit-Fehler

ArrayIndexOutOfBoundsException: <X>

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 4 out of bounds for length 2

Mögliche Fehlerursachen

Mögliche Lösungen

Hinweis:

Indizes eines Arrays gehen von 0 bis Array-Länge - 1.

ERROR_array_oob

ClassCastException: <X>

Exception in thread "main" java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.lang.String (java.lang.Integer and java.lang.String are in module java.base of loader 'bootstrap')

Mögliche Fehlerursachen

Mögliche Lösungen

ERROR_class_cast

NullPointerException

Exception in thread "main" java.lang.NullPointerException

Mögliche Fehlerursachen

Mögliche Lösungen

ERROR_null_pointer

StringIndexOutOfBoundsException: <X>

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: begin 0, end 4, length 1

Mögliche Fehlerursachen

Mögliche Lösungen

Hinweis:

Indizes eines Strings gehen von 0 bis String-Länge - 1.

ERROR_string_oob

by zero

Exception in thread "main" java.lang.ExceptionInInitializerError Caused by: java.lang.ArithmeticException: / by zero

Mögliche Fehlerursachen

Mögliche Lösungen

ERROR_divide_by_zero