"Kann kein Symbol finden" für meine eigene Klasse

7

Ich habe kein% CLASSPATH% eingerichtet. Wie ich es verstehe, sollte dies kein Problem sein, da Javac einen Klassenpfad des aktuellen Verzeichnisses annimmt.

Wie Sie unten sehen können, kann javac meine Case -Klasse nicht finden, obwohl sie sich im selben Verzeichnis befindet. Irgendwelche Gedanken darüber, warum das passiert? Dieser Code funktioniert einwandfrei, wenn ich Eclipse verwende.

%Vor%

Update 1:

Nachdem ich versucht habe, aus meinem Paket root (src) zu kompilieren, bekomme ich einen neuen Fehler (selbst nach dem Löschen der Case.class-Datei)

%Vor%

Update 2: Es scheint, die Case.java-Datei von einem anderen Paket zu greifen.

%Vor%     
Joe Phillips 13.05.2011, 21:38
quelle

4 Antworten

18

Sie müssen aus dem Paketstamm und nicht aus dem Paket kompilieren.

Also, cd zum src Ordner und kompilieren von dort.

%Vor%

Aktualisieren : Wie bei Ihrem neuen Problem müssen Sie Case.java auf die gleiche Weise neu kompilieren. Es wurde anscheinend der gleiche falsche Weg (aus dem Paket) zusammengestellt.

    
BalusC 13.05.2011, 21:41
quelle
1

Wenn das Problem durch das Kompilieren aus dem Paketstammverzeichnis noch nicht gelöst ist (siehe die anderen Antworten):

  • stellen Sie sicher, dass alle Quelldateien Klassen mit Namen enthalten, die ihrem Dateinamen entsprechen
  • stellen Sie sicher, dass alle Quelldateien eine Paketanweisung enthalten, die ihrer Position in der Quelldateihierarchie
  • entspricht
  • Löschen Sie alle Ihre .class-Dateien vor dem Kompilieren (dies sollte nur einmal notwendig sein, wenn Sie alles andere überprüft haben).

Wenn die Datei codejam2011\Round0\D\Case.java ist, sollte sie also package codejam2011.Round0.D; als erste Deklaration und dann public class Case { ... } enthalten. Stellen Sie außerdem sicher, dass keine andere Quelldatei dieses Paket und diese Klassendeklaration enthält.

Aus Ihrer Fehlermeldung sieht es so aus, als wäre die Paketanweisung package codejam2011.Round0.C; (und Sie haben auch eine Klasse Case im realen Paket codejam2011.Round0.C ).

    
Paŭlo Ebermann 15.05.2011 13:43
quelle
0

Sie befinden sich im falschen Verzeichnis zum Kompilieren.

%Vor%

Das sagt mir, dass Ihr Paket codejam2011.Round0.D ist (was gegen die Konvention ist (alles Kleinbuchstaben), aber neben dem Punkt ...

cd zum übergeordneten Verzeichnis von codejam2011, das ist src, nicht wahr?

%Vor%

könnte den Trick machen.

Oft haben Sie ein Verzeichnis für kompilierte Klassen wie 'bin' oder 'classes'. Um die Klassen dort zu erstellen, verwenden Sie -d (Ziel):

%Vor%     
user unknown 13.05.2011 21:49
quelle
-1

Ich habe ein ähnliches Problem, es kann nicht für alle Fälle gelten, aber was ich getan habe, ist remove.gradle, build und out-Ordner und das Programm neu erstellen.

    
Weijing Jay Lin 11.04.2018 20:12
quelle