Foro de elhacker.net

Programación => Java => Mensaje iniciado por: SonnyCrockett en 24 Octubre 2018, 19:30 pm



Título: No se encuentra clase principal
Publicado por: SonnyCrockett en 24 Octubre 2018, 19:30 pm
Buenas, estoy empezando con Java, y me sale este problema del demonio cuando intento ejecutarlo desde la consola de Windows. En netbeans me funciona perfecto pero en el CMD me dice que no se ha encontrado o cargado la clase principal.


Código:
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package primerproyecto;

/**
 *
 * @author SonnyCrockett
 */
public class PrimerProyecto {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        System.out.println("Hola Mundo esto es Java8");
    }
    
}

He intentado solucionarlo buscando ayuda por internet. Pasos que he hecho

  • He introducido la variable de entorno desde propiedades de sistema
  • He cargado la variable desde CMD con set CLASSPATH "ruta del JDK/bin"
  • he desinstalado java, y netbeans, he reiniciado el sistema y lo he vuelto a instalar

y aún así me sigue dando error.  >:(


Título: Re: No se encuentra clase principal
Publicado por: rub'n en 24 Octubre 2018, 20:04 pm
Ve al directorio donde tengas el bytecode es decir el .class

Ten en cuenta q ese archivo está dentro de primerproyecto es  :decir tu package

 java nombrePaquete.TuClase , con el comando java lo ejecutas

E igual desde la cmd que te muestra la consola con

java -version y javac -version este último compila el .java a .class

Estoy desde el cell XD


Título: Re: No se encuentra clase principal
Publicado por: SonnyCrockett en 24 Octubre 2018, 20:27 pm
Ve al directorio donde tengas el bytecode es decir el .class

Ten en cuenta q ese archivo está dentro de primerproyecto es  :decir tu package

 java nombrePaquete.TuClase , con el comando java lo ejecutas

E igual desde la cmd que te muestra la consola con

java -version y javac -version este último compila el .java a .class

Estoy desde el cell XD


Si te he entendido; me has dicho que ejecute el nombre del paquete.class en la consola de comandos? es decir un "java nombre del paquete.class"

si es eso me da error no ha encontrado ni cargado la clase principal.


Título: Re: No se encuentra clase principal
Publicado por: rub'n en 24 Octubre 2018, 20:39 pm
Muestra la salida en la cmd de

Código
  1. java -version

 y

Código
  1. javac -version


Título: Re: No se encuentra clase principal
Publicado por: SonnyCrockett en 25 Octubre 2018, 00:00 am
Muestra la salida en la cmd de

Código
  1. java -version

 y

Código
  1. javac -version

esto?

Código:

24/10/2018  13:58    <DIR>          .
24/10/2018  13:58    <DIR>          ..
24/10/2018  19:17               461 PrimerProyecto.class
24/10/2018  13:38               470 PrimerProyecto.java
               2 archivos            931 bytes
               2 dirs  186.018.664.448 bytes libres

C:\Users\SonnyCrockett\Documents\NetBeansProjects\PrimerProyecto\src\primerproyecto>javac PrimerProyecto.java

C:\Users\SonnyCrockett\Documents\NetBeansProjects\PrimerProyecto\src\primerproyecto>java PrimerProyecto
Error: no se ha encontrado o cargado la clase principal PrimerProyecto

C:\Users\SonnyCrockett\Documents\NetBeansProjects\PrimerProyecto\src\primerproyecto>java PrimerProyecto.class
Error: no se ha encontrado o cargado la clase principal PrimerProyecto.class

C:\Users\SonnyCrockett\Documents\NetBeansProjects\PrimerProyecto\src\primerproyecto>


Título: Re: No se encuentra clase principal
Publicado por: rub'n en 25 Octubre 2018, 00:30 am
Hola,

pues no, lee bien lo que te pongo


Usa tambien GeSHI

(https://3.bp.blogspot.com/-O6qDroNEzts/W8sWHPnV3MI/AAAAAAAADJw/mypp_PTYxbA_uKr7E-O-x0epDjSUdk3mwCK4BGAYYCw/s1600/geshi.gif)




Has esto en tu cmd, el comando date es solo ejemplo


(http://4.bp.blogspot.com/-koYniVeknVA/W9DyACxBxfI/AAAAAAAADKk/gcpfub0M1TInKznS3VsF70a1okWG9T0TACK4BGAYYCw/s1600/comandosJAva.gif)


Título: Re: No se encuentra clase principal
Publicado por: SonnyCrockett en 25 Octubre 2018, 00:37 am
Hola,

pues no, lee bien lo que te pongo


Usa tambien GeSHI

(https://3.bp.blogspot.com/-O6qDroNEzts/W8sWHPnV3MI/AAAAAAAADJw/mypp_PTYxbA_uKr7E-O-x0epDjSUdk3mwCK4BGAYYCw/s1600/geshi.gif)




Has esto en tu cmd, el comando date es solo ejemplo


(http://4.bp.blogspot.com/-koYniVeknVA/W9DyACxBxfI/AAAAAAAADKk/gcpfub0M1TInKznS3VsF70a1okWG9T0TACK4BGAYYCw/s1600/comandosJAva.gif)


Código:
C:\Users\SonnyCrockett\Documents\NetBeansProjects\PrimerProyecto\src\primerproyecto>javac -version
javac 1.8.0_191


C:\Users\SonnyCrockett\Documents\NetBeansProjects\PrimerProyecto\src\primerproyecto>java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

C:\Users\SonnyCrockett\Documents\NetBeansProjects\PrimerProyecto\src\primerproyecto>




Título: Re: No se encuentra clase principal
Publicado por: rub'n en 25 Octubre 2018, 00:54 am
Fijate que me creo una carpeta en el escritorio llamada como tu paquete

Código
  1. javac primerproyecto/PrimerProyecto.java

Este comando deberia de funcionarte ya que, con netbeans tiene el bytecode creado
Código
  1. java primerproyecto/PrimerProyecto

Código
  1. package primerproyecto;
  2.  
  3. import java.util.function.Consumer;
  4. /**
  5.  *
  6.  * @author SonnyCrockett
  7.  */
  8. public class PrimerProyecto {
  9.  
  10.    /**
  11.      * @param args the command line arguments
  12.      */
  13.    public static void main(String[] args) {
  14.        //System.out.println("Hola Mundo esto es Java8");
  15.  
  16. java8(System.out::println,"esto si es java8 XD");
  17.    }
  18.  
  19.    private static void java8(final Consumer<String> c, final String msg) {
  20.        c.accept(msg);
  21.    }
  22.  
  23. }

(http://1.bp.blogspot.com/-zbuh0Xf2aMw/W9D307TTpXI/AAAAAAAADKw/yRvLdimZWFAvr7jZcEiVJSEirvjLo_N3gCK4BGAYYCw/s1600/execJavaJavac.gif)

si no te funciona el comando javac debes ajustarlo en el path de las variables de entorno, justo ahí tienes el fallo


Código
  1. C:\Users\SonnyCrockett\Documents\NetBeansProjects\PrimerProyecto\src\primerproyecto>java -version


debes moverte a la carpeta src, con el siguiente comando te mueves a través de los directorios anteriores
Código
  1. con cd ..

debes moverte haste quedar aquí
Código
  1. C:\Users\SonnyCrockett\Documents\NetBeansProjects\PrimerProyecto\src

y ejecutar desde ahí
Código
  1. java primerproyecto/PrimerProyecto


Título: Re: No se encuentra clase principal
Publicado por: SonnyCrockett en 25 Octubre 2018, 00:59 am
si funciona, había escrito mal el comando lo he corregido, aún así sigue sin funcionar me dice que no tengo cargadas la clase principal, ya tengo configuradas las variables de entorno


Título: Re: No se encuentra clase principal
Publicado por: EdePC en 25 Octubre 2018, 04:55 am
Saludos,

- Cuando utilices Paquetes, el Main Class cambia, por ejemplo en tu caso: "primerproyecto.PrimerProyecto" esto lo puedes revisar en tu NetBeans: Click Detecho en tu Proyecto > Propiedades > Run > Main Class

- Entonces debes de compilar el .java como siempre, luego debes de situarte fuera de cualquier paquete (carpeta primerproyecto) y ejecutar la clase: java primerproyecto.PrimerProyecto

- En conclusión tienes que obtener lo siguiente:

Código:
C:\Users\SonnyCrockett\Documents\NetBeansProjects\PrimerProyecto\src\primerproyecto>javac PrimerProyecto.java

C:\Users\SonnyCrockett\Documents\NetBeansProjects\PrimerProyecto\src\primerproyecto>cd ..
C:\Users\SonnyCrockett\Documents\NetBeansProjects\PrimerProyecto\src>java primerproyecto.PrimerProyecto
Hola Mundo esto es Java8

C:\Users\SonnyCrockett\Documents\NetBeansProjects\PrimerProyecto\src>

-- O también así:

Código:
C:\Users\SonnyCrockett\Documents\NetBeansProjects\PrimerProyecto\src\>javac primerproyecto\PrimerProyecto.java

C:\Users\SonnyCrockett\Documents\NetBeansProjects\PrimerProyecto\src>java primerproyecto.PrimerProyecto
Hola Mundo esto es Java8

C:\Users\SonnyCrockett\Documents\NetBeansProjects\PrimerProyecto\src>


Título: Re: No se encuentra clase principal
Publicado por: SonnyCrockett en 25 Octubre 2018, 09:37 am
Saludos,

- Cuando utilices Paquetes, el Main Class cambia, por ejemplo en tu caso: "primerproyecto.PrimerProyecto" esto lo puedes revisar en tu NetBeans: Click Detecho en tu Proyecto > Propiedades > Run > Main Class

- Entonces debes de compilar el .java como siempre, luego debes de situarte fuera de cualquier paquete (carpeta primerproyecto) y ejecutar la clase: java primerproyecto.PrimerProyecto

- En conclusión tienes que obtener lo siguiente:

Código:
C:\Users\SonnyCrockett\Documents\NetBeansProjects\PrimerProyecto\src\primerproyecto>javac PrimerProyecto.java

C:\Users\SonnyCrockett\Documents\NetBeansProjects\PrimerProyecto\src\primerproyecto>cd ..
C:\Users\SonnyCrockett\Documents\NetBeansProjects\PrimerProyecto\src>java primerproyecto.PrimerProyecto
Hola Mundo esto es Java8

C:\Users\SonnyCrockett\Documents\NetBeansProjects\PrimerProyecto\src>

-- O también así:

Código:
C:\Users\SonnyCrockett\Documents\NetBeansProjects\PrimerProyecto\src\>javac primerproyecto\PrimerProyecto.java

C:\Users\SonnyCrockett\Documents\NetBeansProjects\PrimerProyecto\src>java primerproyecto.PrimerProyecto
Hola Mundo esto es Java8

C:\Users\SonnyCrockett\Documents\NetBeansProjects\PrimerProyecto\src>

Me sigue diciendo que no encuentra o no carga la clase principal.

he probado una cosa que he leido:

Código:
C:\Users\SonnyCrockett\Documents\NetBeansProjects\PrimerProyecto\src>Set CLASSPATH
Variable de entorno CLASSPATH no definida

C:\Users\SonnyCrockett\Documents\NetBeansProjects\PrimerProyecto\src>Set CLASSPATH = "C:\Program Files\Java\jdk1.8.0_191\bin"

C:\Users\SonnyCrockett\Documents\NetBeansProjects\PrimerProyecto\src>Set CLASSPATH
CLASSPATH = "C:\Program Files\Java\jdk1.8.0_191\bin"

C:\Users\SonnyCrockett\Documents\NetBeansProjects\PrimerProyecto\src>java primerproyecto.Primerproyecto
Error: no se ha encontrado o cargado la clase principal primerproyecto.Primerproyecto

C:\Users\SonnyCrockett\Documents\NetBeansProjects\PrimerProyecto\src>


Título: Re: No se encuentra clase principal
Publicado por: EdePC en 25 Octubre 2018, 14:17 pm
- Revisa bien el código que he puesto, tienes que digitarlo tal cual. Java distingue entre mayúsculas y minúsculas, y veo que has puesto: java primerproyecto.Primerproyecto en lugar de java primerproyecto.PrimerProyecto

-- Ayúdate de DIR o del Autocompletar (TAB) de la consola para ver los nombres correctos. Si el problema persiste copia tus pasos en la consola y pégalos aquí para revisarlos.


Título: Re: No se encuentra clase principal
Publicado por: SonnyCrockett en 25 Octubre 2018, 19:16 pm
- Revisa bien el código que he puesto, tienes que digitarlo tal cual. Java distingue entre mayúsculas y minúsculas, y veo que has puesto: java primerproyecto.Primerproyecto en lugar de java primerproyecto.PrimerProyecto

-- Ayúdate de DIR o del Autocompletar (TAB) de la consola para ver los nombres correctos. Si el problema persiste copia tus pasos en la consola y pégalos aquí para revisarlos.

ok, Ya funciona!!!!  :D Muchísimas gracias!!! y a usted también @rub'n

¿Por qué hay que ejecutarlo con el main, y no con el fichero PrimerProyecto.java?

El manual que sigo, dice que hay que hacer esto:

Javac PrimerProyecto.java

Para crear el class

y

"Java PrimerProyecto", para ejecutarlo


Título: Re: No se encuentra clase principal
Publicado por: EdePC en 26 Octubre 2018, 03:10 am
ok, Ya funciona!!!!  :D Muchísimas gracias!!! y a usted también @rub'n

¿Por qué hay que ejecutarlo con el main, y no con el fichero PrimerProyecto.java?

El manual que sigo, dice que hay que hacer esto:

Javac PrimerProyecto.java

Para crear el class

y

"Java PrimerProyecto", para ejecutarlo

- Cierto, es así siempre y cuando no uses paquetes, que lo normal es no utilizarlos en ejercicios muy simples o de adiestramiento, pero ya luego se ve que se usan varios Paquetes y referencias a clases y librerías donde el propio NetBeans ayuda mucho generando el CLASSPATH adecuando para el programa.

-- Por ejemplo si tu ejercicio necesitas utilizar unas librerías .jar ubicadas todas en una carpeta llamada "lib", se tendría que ejecutar algo así:

Código
  1. java -classpath ".;.\lib\*" primerproyecto.PrimerProyect

-- Más info: https://en.wikipedia.org/wiki/Classpath_%28Java%29