Así que he estado tratando de resolver este problema en una cuestión de horas. He recorrido el internet, he rastreado StackOverflow, he preguntado a algunos compañeros de trabajo (soy un pasante) y, honestamente, nadie puede decirme lo que está pasando! Puse una realmente sencillo ejemplo para mostrar lo que estoy haciendo (y me da el error, incluso con el simple ejemplo)

Tengo dos .java archivos. Uno es Test.java el otro es testClass.java.

//testClass.java

package test;

public class testClass {
    private int someMember=0;

    public testClass(){
        //kill me now
    }

}

Entonces tengo mi Test.java archivo que contiene mi método principal. (aunque en mi real problemIi no tiene un método main – un servlet con un doGet() método)

//Test.java
package test;

public class Test {

    public static void main(String[] args) {
        testClass myTest = new testClass();
    }
}

Estoy compilando con el siguiente (desde la línea de comandos de windows, con el directorio actual donde he guardado mi .archivos de java):

..java bin location..\javac testClass.java

Esto funciona absolutamente bien y me sale un testClass.class archivo en el directorio actual. Yo, entonces, a tratar de compilar el Test.java archivo con el siguiente (de nuevo dentro del directorio de trabajo):

..java bin location..\javac -classpath . Test.java

Este resultado el siguiente error:

Test.java:6: cannot find symbol
symbol : class testClass
location : class test.testClass
   testClass myTest = new testClass();

Puede usted por favor ayuda a un hermano? 🙁

  • Son los archivos en una carpeta con el nombre de prueba?

3 Comentarios

  1. 14

    Sus clases en un paquete, y Java buscará clases, asumiendo que la estructura del paquete – pero javac no construir que la estructura para usted, a menos que se le indique; normalmente, poner el archivo de clase junto con el archivo Java.

    Opciones:

    • Poner los archivos de origen en test directorio, y compilar test\Test.java y test\testClass.java
    • Especificar -d . cuando se compila, a fuerza de javac para construir una estructura de paquete.

    El uso de un IDE (Eclipse, IntelliJ, etc) tiende a fomentar o incluso obligan a poner los archivos en el directorio correcto, y por lo general hace que el código sea más fácil también.

    • hotdamn, muchas gracias hombre. mis archivos estaban en la carpeta de la derecha, ‘prueba’, pero yo estaba compilando desde dentro de ese directorio.. no tenía ni idea de compilación se tenía que hacer desde el directorio padre. doh! odio a estos problemas triviales que mantenga las cosas inútilmente!
  2. 0

    Hice exactamente lo que hizo

    $ ls -la test/
    drwxr-xr-x  6 amirraminfar  staff  204 Jul 21 10:24 .
    drwxr-xr-x  3 amirraminfar  staff  102 Jul 21 10:23 ..
    -rw-r--r--  1 amirraminfar  staff  148 Jul 21 10:24 Test.java
    -rw-r--r--  1 amirraminfar  staff  140 Jul 21 10:24 testClass.java

    Luego se compila

    $ javac test/*

    Luego corrieron. Y todo funcionó. Así que este me dice que el problema es la forma en que se está compilando. Has probado a compilar ambas clases juntos?

     $ java test.Test

    Editar – me hizo poner todos mis archivos en test/ dir como Jon Skeet ha dicho. Tal vez eso es lo que es diferente.

  3. 0

    Más fácil de arreglar: Crear un directorio test y el lugar de su .java‘s allí, agregar la carpeta que contiene su testde la carpeta en la ruta de clases. Si no sabes cómo hacerlo, sólo tienes que poner tu test-en la carpeta de java-subcarpeta de la carpeta lib (por ejemplo, c:\prog\javasdk\lib). Solo compile con javac Test.java (testClass compilará automáticamente), ejecutarlo con java test.Test desde cualquier lugar.

Dejar respuesta

Please enter your comment!
Please enter your name here