keinen Zugriff auf die Klassen im Paket
Ich habe die folgende Verzeichnisstruktur :
MessManagement
ist das übergeordnete Verzeichnis.
Unter, ich habe 3 Verzeichnisse :
student
, messconvener
,messmanager
Den Schüler-Verzeichnis enthält die Student.java
und Student.class
- Dateien. Die messconvener
enthält die MessConvener.java
dies erfordert die Student class
als MessConvener
verlängert von Student
selbst.
Wie soll ich das Verpacken der Klassen....??
Was ich bisher versucht habe.
Code :
Dies ist Student.java
package MessManagement;
import java.sql.*;
public class Student
{
}
Dies ist MessConvener.java
package MessManagement;
import MessManagement.student.Student;
public class MessConvener extends Student
{
}
Aber das scheint nicht zu funktionieren.Fehler Meesage :
MessConvener.java:2: error: package MessManagement.student does not exist
import MessManagement.student.Student;
^
MessConvener.java:3: error: cannot find symbol
public class MessConvener extends Student
^
symbol: class Student
2 errors
- Welche IDE nutzen Sie?
- ich bin mit terminal in ubuntu
- Wie kompilieren Sie das? Suche in deiner Fehlermeldung, ich denke, es ist eine einfache classpath-Problem. Müssen Sie Ihre classpath in Ihrem javac-Befehl, wenn Sie versuchen, um es zu kompilieren.
- poste deinen code hier.. so können wir Ihnen helfen besser..
- hast du den ersten kompilieren der Student.java Klasse, vor dem kompilieren MessConvener.java Klasse?
- ich es kompilieren mit javac.
- ich habe bereits kompiliert Student.java
- dies scheint ein problem mit Intellij IDEA (rsp. die Nutzung). hatte dieses problem heute zweimal, konnte es beheben in der maven-Projekt mit smac89 helfen, und jetzt habe ich es in dem anderen (gradle) - Projekt, zu. Passiert, wenn ich kopierte einige Klassen von einem Projekt zum anderen. sehr seltsames Verhalten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es zwei mögliche Gründe, warum dies geschieht
Ist die Wurzel Ihrer Verzeichnisse enthalten im classpath? Sie müssen angeben, der beim starten eines java-Programms. Finden Sie in der Dokumentation nach, wie das oder diese Variante für unix.
Sind Ihre Klassen öffentlichkeit? Wenn Sie vergessen, die public-Modifizierer-Klassen wird der Paket-Sichtbarkeit und können nicht aufgerufen werden, die von anderen Paketen.
Oh, gut, niemand erwartet die Spanische inquisition ... überprüfen Sie die Schreibweise genau, inklusive Hauptstädte.
Den Fehler, Sie sind immer sinnvoll. Die
Student
- Klasse befindet sich inMessManagement
Paket nichtMessManagement.student
Paket.Für mich, ich habe diesen Fehler aus einem anderen Grund, und dieser war in einem maven-Projekt. Es begann zu treten, nachdem ich größere änderungen an den Klassen und kopiert Sie in eine Menge von neuen Klassen. Es gab keinen Konflikt mit package-Namen, wie in Ihrem Fall.
War die Lösung zu tun
mvn clean
.Danach habe ich nicht bekommen, dass der Fehler nicht mehr.
Ich hatte kürzlich dieses Problem, und es war denn ich hatte eine class-Datei im gleichen Verzeichnis wie die java-Datei, die ich kompilieren wollte. Sie müssen löschen Sie alle .die class-Dateien in diesem Verzeichnis.
Ich gelöscht, die aus Ordner und das problem war gelöst
Dies kann auftreten, beim kopieren von Dateien von einem Projekt in die andere verschieben oder wenn Sie die Dateien per umgestalten.
Geholfen haben, für mich in meinem Intellij IDEA/Gradle-Projekt war das entfernen der Paket-Zeile und verwenden Sie
Shift+Enter
zu ersetzen, die es mit dem scheinbar gleichen. Wenn Sie haben eine Menge von Klassen, die Sie benötigen, finden Sie die "Wurzel" von Abhängigkeiten und starten Sie es zuerst.Sehr merkwürdige Lösung, als ein diff, um den Klartext der diese Dateien zeigen würde, nichts, aber löst das problem.
Eine andere Lösung kann sein, benutzen Sie Refactor-Rename auf der Verpackung, geben Sie es ein buffername und dann nennen Sie es wieder zurück, wie Sie es wollen genannt werden.
Ich habe nicht sah tiefer in warum dies der Fall ist.
In maven-Projekt
mvn clean
mir geholfen.