Umgang mit Importanweisungs-Problemen
In diesem letzten Schritt erfahren Sie, wie Sie Fehler vom Typ 'Cannot Access Class' (Klasse kann nicht zugegriffen werden) identifizieren und beheben können, die durch fehlende oder falsche Importanweisungen verursacht werden.
Verstehen von Importanweisungen in Java
Importanweisungen teilen dem Java-Compiler mit, wo er Klassen finden kann, die in Ihrem Code verwendet werden. Wenn Sie eine Klasse aus einem anderen Paket verwenden, ohne sie zu importieren, oder wenn Sie sie falsch importieren, tritt der Fehler 'Cannot Access Class' (Klasse kann nicht zugegriffen werden) auf.
Erstellen einer Klasse ohne Importanweisungen
Lassen Sie uns eine Klasse erstellen, die Klassen aus anderen Paketen ohne korrekte Importanweisungen verwendet. Erstellen Sie eine neue Datei namens Calculator.java im Verzeichnis src/main/java/com/example/util mit folgendem Inhalt:
package com.example.util;
public class Calculator {
public int add(int a, int b) {
return a + b;
}
public int subtract(int a, int b) {
return a - b;
}
}
Erstellen Sie nun eine neue Datei namens CalculatorDemo.java im Verzeichnis src/main/java/com/example/app, die die Calculator-Klasse verwendet, ohne sie zu importieren:
package com.example.app;
// Missing import for Calculator class
public class CalculatorDemo {
public static void main(String[] args) {
Calculator calculator = new Calculator(); // Error: Cannot access Calculator
int sum = calculator.add(5, 3);
System.out.println("5 + 3 = " + sum);
int difference = calculator.subtract(10, 4);
System.out.println("10 - 4 = " + difference);
}
}
Kompilieren und Beobachten des Fehlers
Versuchen Sie, Ihr Java-Projekt zu kompilieren:
./compile.sh
Sie sollten eine Fehlermeldung ähnlich der folgenden sehen:
src/main/java/com/example/app/CalculatorDemo.java:6: error: cannot find symbol
Calculator calculator = new Calculator();
^
symbol: class Calculator
location: class CalculatorDemo
src/main/java/com/example/app/CalculatorDemo.java:6: error: cannot find symbol
Calculator calculator = new Calculator();
^
symbol: class Calculator
location: class CalculatorDemo
2 errors
Dieser Fehler tritt auf, weil die Klasse CalculatorDemo versucht, die Klasse Calculator zu verwenden, ohne sie zu importieren.
Beheben des Importanweisungs-Problems
Um dieses Problem zu beheben, fügen Sie die richtige Importanweisung zur Datei CalculatorDemo.java hinzu:
package com.example.app;
import com.example.util.Calculator; // Added import statement
public class CalculatorDemo {
public static void main(String[] args) {
Calculator calculator = new Calculator();
int sum = calculator.add(5, 3);
System.out.println("5 + 3 = " + sum);
int difference = calculator.subtract(10, 4);
System.out.println("10 - 4 = " + difference);
}
}
Erneutes Kompilieren und Testen der Lösung
Kompilieren Sie nun Ihr Java-Projekt erneut:
./compile.sh
Die Kompilierung sollte jetzt ohne Fehler erfolgreich sein. Erstellen wir ein einfaches Skript, um die Klasse CalculatorDemo auszuführen:
echo "java -cp bin com.example.app.CalculatorDemo" > ./runcalc.sh
chmod +x ./runcalc.sh
Führen Sie nun die Klasse CalculatorDemo aus:
./runcalc.sh
Sie sollten die folgende Ausgabe sehen:
5 + 3 = 8
10 - 4 = 6
Dies bestätigt, dass unsere Klasse CalculatorDemo jetzt auf die Klasse Calculator zugreifen kann, da wir die korrekte Importanweisung hinzugefügt haben.
Verstehen der Lösung
Wenn Sie auf einen Fehler 'Cannot Access Class' (Klasse kann nicht zugegriffen werden) stoßen, überprüfen Sie Folgendes:
- Sie haben die Klasse importiert, die Sie verwenden möchten.
- Die Importanweisung verweist auf das richtige Paket.
- Die Klasse, die Sie importieren möchten, ist public (wie wir in Schritt 2 gelernt haben).
Java bietet zwei Möglichkeiten, Klassen zu importieren:
- Single-type import (Einzeltyp-Import):
import com.example.util.Calculator;
- On-demand import (Bedarfs-Import):
import com.example.util.*;
Der Einzeltyp-Import wird im Allgemeinen bevorzugt, da er verdeutlicht, welche Klassen verwendet werden. Der Bedarfs-Import (mit dem Platzhalter *) importiert alle Klassen aus einem Paket, was zu Namenskonflikten führen kann, wenn Klassen mit demselben Namen in verschiedenen Paketen existieren.
Indem Sie sicherstellen, dass Ihre Importanweisungen korrekt sind, können Sie viele Fehler vom Typ 'Cannot Access Class' (Klasse kann nicht zugegriffen werden) in Ihren Java-Projekten vermeiden.