"Cannot find symbol" für meine eigene Klasse

Ich nicht ein %CLASSPATH% set up. So wie ich das verstehe, sollte dies nicht ein problem sein, da Javac davon aus classpath das aktuelle Verzeichnis.

Wie Sie unten sehen können, javac nicht finden kann, wird mein Case Klasse, obwohl es im gleichen Verzeichnis. Irgendwelche Gedanken auf, warum dies passiert ist? Dieser code funktioniert wunderbar, wenn ich Eclipse verwenden.

C:\Documents and Settings\joep\My Documents\GCJ\src\codejam2011\Round0\D>dir /B
Case.class
Case.java
EntryPoint.java

C:\Documents and Settings\joep\My Documents\GCJ\src\codejam2011\Round0\D>javac EntryPoint.java

EntryPoint.java:16: cannot find symbol
symbol  : class Case
location: class codejam2011.Round0.D.EntryPoint
                ArrayList<Case> cases = new ArrayList<Case>();
                          ^
EntryPoint.java:16: cannot find symbol
symbol  : class Case
location: class codejam2011.Round0.D.EntryPoint
                ArrayList<Case> cases = new ArrayList<Case>();
                                                      ^
EntryPoint.java:24: cannot find symbol
symbol  : class Case
location: class codejam2011.Round0.D.EntryPoint
                                cases.add(new Case(new Integer(count), line));
                                              ^
3 errors

C:\Documents and Settings\joep\My Documents\GCJ\src\codejam2011\Round0\D>

Update 1:

Nach dem Versuch zu kompilieren, mein Paket root (src), bekomme ich eine neue Fehlermeldung (auch nach dem löschen der Case.class Datei)

C:\Documents and Settings\joep\My Documents\GCJ\src>javac -cp . codejam2011/Round0/D/EntryPoint.java

codejam2011\Round0\D\EntryPoint.java:16: cannot access codejam2011.Round0.D.Case

bad class file: .\codejam2011\Round0\D\Case.java
file does not contain class codejam2011.Round0.D.Case
Please remove or make sure it appears in the correct subdirectory of the classpath.
                ArrayList<Case> cases = new ArrayList<Case>();
                          ^
1 error

C:\Documents and Settings\joep\My Documents\GCJ\src>

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

C:\Documents and Settings\joep\My Documents\GCJ\src>javac -d ../classes codejam2011\Round0\D\*.java

.\codejam2011\Round0\D\Case.java:4: duplicate class: codejam2011.Round0.C.Case
public class Case
       ^
codejam2011\Round0\D\EntryPoint.java:16: cannot access codejam2011.Round0.D.Case

bad class file: .\codejam2011\Round0\D\Case.java
file does not contain class codejam2011.Round0.D.Case
Please remove or make sure it appears in the correct subdirectory of the classpath.
                ArrayList<Case> cases = new ArrayList<Case>();
                          ^
2 errors

C:\Documents and Settings\joep\My Documents\GCJ\src>
  • Hast du import-Klasse Fall in EntryPoint?
  • Das ist nicht notwendig, da es im selben Paket.
  • Studium haben Sie die Fehlermeldungen? duplicate class: codejam2011.Round0.C.Case Es gibt C-und D - eine Mehrdeutigkeit. Sie haben, um einige Importe, oder geben Sie ausdrücklich die Falle, codejam2011.Round0.C.Fall oder codejam2011.Round0.D....Fall du meinst.
  • Sie sind in verschiedenen Paketen, obwohl. Warum sollte der compiler verwirrt und versuchen, ein von einem anderen Paket?
  • Ich habe nicht einen überblick über Ihre source-dir(s), dein Ziel dir(s), dem aktuellen Verzeichnis, Umgebungsvariablen und die Geschichte Ihrer Aktionen. Sie sollten beginnen, das löschen aller alten Klassen.
InformationsquelleAutor Joe Phillips | 2011-05-13
Schreibe einen Kommentar