Cuando empezamos a aprender Java un error muy común al compilar desde DOS es que nos encontramos con errores en la compilación y no sepamos como resolverlo. Por ejemplo un de ellos se produce cuando en una clase creamos un objecto a partir de otra clase.
Por ejemplo teniendo estas dos clases, una es Leer.java y la otra Leer3.java que crea el objeto de la case Leer.java:
//Clase Leer.java
import java.io.*;
import java.util.Scanner;
public class Leer{
public String Leer()
{
return porTeclado();
}
public String porTeclado()
{
Scanner leer = new Scanner(System.in);
String cadena = leer.next();
return cadena;
}
}
//Clase Leer3.java
public class Leer3
{
public static void main(String args[])
{
Leer vleer = new Leer();
String cadena = vleer.porTeclado();
System.out.println("Texto leido : " + cadena);
}
}
Partimos de que los dos archivos están guardados en el siguiente directorio:
C:\cursojava\modulor4\practica4\Leer.java
C:\cursojava\modulor4\practica4\Leer3.java
Al compilar las clases según se muestra a continuación, vemos que nos genera un error de "cannot find symbol", en la compilación de la clase Leer3.java, cuando la compilación de la clase Leer.java no ha generado ningún problema.
C:\cursojava>javac modulo4/practica4/Leer.java
C:\cursojava>javac modulo4/practica4/Leer3.java
modulo4\practica4\Leer3.java:6: cannot find symbol
symbol : class Leer
location: class Leer3
Leer vleer = new Leer();
^
modulo4\practica4\Leer3.java:6: cannot find symbol
symbol : class Leer
location: class Leer3
Leer vleer = new Leer();
^
2 errors
El problema es debido a que la clase Leer3 necesita crear el el objecto de la clase Leer pero el compilador desconoce donde se encuentra almacenada dicha clase. Para ello debemos agrupar estas dos clases en un paquete PACKAGE, esta clave la deberemos indicar al principio de cada una de las clases para evitar el error. Hay que tener en cuenta la clave del paquete debe mantener la misma estructura de directorios donde están almacenadas las clases.
Según hemos visto en el ejemplo las clases deberían quedar de la siguiente manera:
//Clase Leer.java
package modulo4.practica4;
import java.io.*;
import java.util.Scanner;
public class Leer{
public String Leer()
{
return porTeclado();
}
public String porTeclado()
{
Scanner leer = new Scanner(System.in);
String cadena = leer.next();
return cadena;
}
}
//Clase Leer3.java
package modulo4.practica4;
public class Leer3
{
public static void main(String args[])
{
Leer vleer = new Leer();
String cadena = vleer.porTeclado();
System.out.println("Texto leido : " + cadena);
}
}
NOTA: También afecta la configuración de la variable de entorno CLASSPATH que para este ejemplo su valor es: c:\Java\jdk1.6.0_23\lib;c:\cursojava
No puedo puedes ayudarme o que estaré haciendo mal.
ResponderEliminarEra lo que necesitaba leer. estaba tratando de construir un proyecto grande y tenia problemas con un modulo importado desde un repositorio, y ese era el problema! no creaba los paquetes!
ResponderEliminarQue bueno que me encontré con tu post.
"El problema es debido a que la clase Leer3 necesita crear el el objecto de la clase Leer pero el compilador desconoce donde se encuentra almacenada dicha clase. Para ello debemos agrupar estas dos clases en un paquete PACKAGE, esta clave la deberemos indicar al principio de cada una de las clases para evitar el error."
No me sirvio
ResponderEliminarYa pude solucionar el error:
EliminarEn realidad no solucioné nada, solo compile desde src.
Yo programo en Eclipse y pues, estaba compilando mis clases desde la misma carpeta del paquete, es decir:
D:\Fernando J.r\Proyectos Java\Proyectos Eclipse\EclipseProjects\Calculadora(Hec
ha en Eclipse)\src\clases>
El paquete se llama clases.
Cuando compilaba una desde esa direccion me botaba el cannot find symbol.
lo que hice fue compilar desde el src así:
D:\Fernando J.r\Proyectos Java\Proyectos Eclipse\EclipseProjects\Calculadora(Hec
ha en Eclipse)\src>javac clases\Main.java
de esta forma lo hizo correctamente...
hermano, simplemente eres un genio.
EliminarNo entiendo que es src. Disculpa soy principiante y tengo el mismo error.
EliminarPor otro lado,Uso Dr.Java y mi java esta en el archivos C y mis documentos .java guardados en desktop.
File: C:\Users\A\Desktop\Servicio\discos\Usuario.java [line: 6]
Error: cannot find symbol
symbol: class Disco
location: class discos.Usuario
gracias Fernando muy bien yo resolvi el mismo error solo cambiando la ccarpeta donde tenia mis archivos al excritorio y ahi corrio sin problema
ResponderEliminar