Java Compiler-Fehler: Unzulässiger Ausdrucksbeginn

1. Übersicht

Der „illegale Beginn des Ausdrucks“ ist ein häufiger Fehler, der beim Kompilieren auftreten kann.

In diesem Tutorial sehen wir Beispiele, die die Hauptursachen dieses Fehlers und dessen Behebung veranschaulichen.

2. Fehlende geschweifte Klammern

Fehlende geschweifte Klammern können zum Fehler "Unzulässiger Ausdrucksbeginn" führen. Schauen wir uns zuerst ein Beispiel an:

package com.baeldung; public class MissingCurlyBraces { public void printSum(int x, int y) { System.out.println("Calculation Result:" + calcSum(x, y)); public int calcSum(int x, int y) { return x + y; } }

Wenn wir die obige Klasse kompilieren:

$ javac MissingCurlyBraces.java MissingCurlyBraces.java:7: error: illegal start of expression public int calcSum(int x, int y) { ^ MissingCurlyBraces.java:7: error: ';' expected public int calcSum(int x, int y) { ..... 

Das Fehlen der schließenden geschweiften Klammer von printSum () ist die Hauptursache des Problems.

Die Lösung des Problems ist einfach : Fügen Sie der printSum () -Methode die schließende geschweifte Klammer hinzu :

package com.baeldung; public class MissingCurlyBraces { public void printSum(int x, int y) { System.out.println("Calculation Result:" + calcSum(x, y)); } public int calcSum(int x, int y) { return x + y; } }

Bevor wir mit dem nächsten Abschnitt fortfahren, überprüfen wir den Compilerfehler.

Der Compiler meldet, dass die 7. Zeile den Fehler "Unzulässiger Start des Ausdrucks" verursacht. Tatsächlich wissen wir, dass die Hauptursache des Problems in der 6. Zeile liegt. Aus diesem Beispiel erfahren wir, dass die Compilerfehler manchmal nicht auf die Zeile mit der Grundursache verweisen und wir die Syntax in der vorherigen Zeile korrigieren müssen .

3. Access Modifier Inside Method

In Java können wir nur lokale Variablen innerhalb einer Methode oder eines Konstruktors deklarieren . Wir können keinen Zugriffsmodifikator für lokale Variablen innerhalb einer Methode verwenden, da deren Zugriffsmöglichkeiten durch den Methodenbereich definiert werden.

Wenn wir gegen die Regel verstoßen und Zugriffsmodifikatoren in einer Methode haben, wird der Fehler "Unzulässiger Ausdrucksbeginn" ausgelöst.

Lassen Sie uns dies in Aktion sehen:

package com.baeldung; public class AccessModifierInMethod { public void printSum(int x, int y) { private int sum = x + y; System.out.println("Calculation Result:" + sum); } }

Wenn wir versuchen, den obigen Code zu kompilieren, wird der Kompilierungsfehler angezeigt:

$ javac AccessModifierInMethod.java AccessModifierInMethod.java:5: error: illegal start of expression private int sum = x + y; ^ 1 error

Das Entfernen des Modifikators für den privaten Zugriff löst das Problem auf einfache Weise:

package com.baeldung; public class AccessModifierInMethod { public void printSum(int x, int y) { int sum = x + y; System.out.println("Calculation Result:" + sum); } }

4. Verschachtelte Methoden

Einige Programmiersprachen wie Python unterstützen verschachtelte Methoden. Aber Java kein Verfahren in einem anderen Verfahren unterstützen.

Wenn wir verschachtelte Methoden erstellen, tritt der Compilerfehler "Unzulässiger Start des Ausdrucks" auf:

package com.baeldung; public class NestedMethod { public void printSum(int x, int y) { System.out.println("Calculation Result:" + calcSum(x, y)); public int calcSum ( int x, int y) { return x + y; } } } 

Lassen Sie uns die obige Quelldatei kompilieren und sehen, was der Java-Compiler meldet:

$ javac NestedMethod.java NestedMethod.java:6: error: illegal start of expression public int calcSum ( int x, int y) { ^ NestedMethod.java:6: error: ';' expected public int calcSum ( int x, int y) { ^ NestedMethod.java:6: error:  expected public int calcSum ( int x, int y) { ^ NestedMethod.java:6: error: not a statement public int calcSum ( int x, int y) { ^ NestedMethod.java:6: error: ';' expected public int calcSum ( int x, int y) { ^ 5 errors

Der Java-Compiler meldet fünf Kompilierungsfehler. In einigen Fällen kann ein einzelner Fehler während der Kompilierungszeit mehrere weitere Fehler verursachen.

Das Erkennen der Grundursache ist für uns wichtig, um das Problem lösen zu können. In diesem Beispiel ist der erste Fehler "Unzulässiger Ausdrucksbeginn" die Hauptursache.

Wir können das Problem schnell lösen, indem wir die calcSum () -Methode aus der printSum () -Methode verschieben:

package com.baeldung; public class NestedMethod { public void printSum(int x, int y) { System.out.println("Calculation Result:" + calcSum(x, y)); } public int calcSum ( int x, int y) { return x + y; } } 

5. char oder String ohne Anführungszeichen

Wir wissen, dass String- Literale in doppelte Anführungszeichen gesetzt werden sollten, während char- Werte in einfache Anführungszeichen gesetzt werden sollten.

Wenn wir vergessen, diese in die richtigen Anführungszeichen zu setzen, behandelt der Java-Compiler sie als Variablennamen .

Möglicherweise wird der Fehler "Symbol kann nicht gefunden werden" angezeigt, wenn die "Variable" nicht deklariert ist.

Allerdings , wenn wir vergessen , eine auf doppelte Anführungszeichen String , der keine gültige Java Variablenname ist, wird der Java - Compiler die „illegal Start des Ausdrucks“ Fehler melden .

Schauen wir uns das anhand eines Beispiels an:

package com.baeldung; public class ForgetQuoting { public int calcSumOnly(int x, int y, String operation) { if (operation.equals(+)) { return x + y; } throw new UnsupportedOperationException("operation is not supported:" + operation); } } 

Wir haben vergessen, den String + im Aufruf der equals- Methode anzugeben , und + ist offensichtlich kein gültiger Java-Variablenname.

Versuchen wir nun, es zu kompilieren:

$ javac ForgetQuoting.java ForgetQuoting.java:5: error: illegal start of expression if (operation.equals(+)) { ^ 1 error 

Die Lösung des Problems ist einfach: String- Literale in doppelte Anführungszeichen setzen:

package com.baeldung; public class ForgetQuoting { public int calcSumOnly(int x, int y, String operation) { if (operation.equals("+")) { return x + y; } throw new UnsupportedOperationException("operation is not supported:" + operation); } } 

6. Fazit

In diesem kurzen Artikel haben wir über fünf verschiedene Szenarien gesprochen, die den Fehler "illegaler Ausdrucksbeginn" auslösen.

In den meisten Fällen verwenden wir bei der Entwicklung von Java-Anwendungen eine IDE, die uns warnt, wenn Fehler erkannt werden. Diese netten IDE-Funktionen können einen großen Beitrag dazu leisten, uns vor diesem Fehler zu schützen.

Es kann jedoch immer noch vorkommen, dass der Fehler von Zeit zu Zeit auftritt. Ein gutes Verständnis des Fehlers hilft uns daher, den Fehler schnell zu lokalisieren und zu beheben.