No tengo una configuración% CLASSPATH% configurada. Según tengo entendido, esto no debería ser un problema porque Javac asumirá un classpath del directorio actual."No se puede encontrar el símbolo" para mi propia clase
Como puede ver a continuación, javac no puede encontrar mi clase Case
aunque esté en el mismo directorio exacto. ¿Alguna idea de por qué esto está sucediendo? Este código funciona bien cuando uso Eclipse.
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>
Actualización 1:
Después de intentar compilar de mi raíz del paquete (src), aparece un nuevo error (incluso después de la eliminación del archivo Case.class)
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>
Actualización 2: Parece que está tomando el archivo Case.java de un paquete diferente.
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>
¿Importó la clase Case en EntryPoint? – Danish
@ Danish: Eso no es necesario ya que está en el mismo paquete. – BalusC
¿Estudiaste los mensajes de error? 'clase duplicada: codejam2011.Round0.C.Case' Hay C y D - una ambigüedad. Debe excluir algunas importaciones o especificar explícitamente en qué Caso, codejam2011.Round0.C.Case o codejam2011.Round0.D.Case, quiere decir. –