configurar agregar java cmd classpath environment-variables

agregar - Error "No se pudo encontrar o cargar la clase principal" al ejecutar el programa Java con el comando cmd



java classpath command line (13)

Estoy ejecutando un programa simple "HelloWorld". Aparece este error en el símbolo del sistema:

No se pudo encontrar o cargar la clase principal HelloWorld .

Establecí la variable CLASSPATH y PATH en el sistema. En el símbolo del sistema de cmd , me estoy ejecutando desde el directorio donde HelloWorld programa HelloWorld . Puedo ver que el nombre de la clase y el nombre del archivo son los mismos y también el archivo .class creado en el mismo directorio. ¿Qué otra cosa podría ser el problema?

Mi programa de ejemplo se ve así:

package org.tij.exercises; public class HelloWorld { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("Hello World!!"); } }


¿Cuál es tu valor CLASSPATH ?

Puede verse así:

.;%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar

Supongo que tu valor no contiene esto .; .

Entonces, AGREGALO .
Cuando termine, reinicie CMD

Eso puede funcionar

Por ejemplo, el archivo HelloWorld.java está en la ruta: D:/myjavatest/org/yz/test y su package es: org.yz.test .

Ahora, estás en la ruta D:/myjavatest/ en la línea CMD.
Escriba esto para compilarlo:

javac org/yz/test/HelloWorld.java

Luego, escribe esto para ejecutarlo:

java org.yz.test.HelloWorld

Puede obtener lo que quiere.


Como lo está ejecutando desde el símbolo del sistema, debe asegurarse de que su classpath sea ​​correcta. Si ya lo configuró, debe reiniciar su terminal para volver a cargar las variables de su sistema.

Si -classpath y -cp no se usan y CLASSPATH no está configurado, se usa el directorio actual ( . ); Sin embargo, cuando se ejecutan archivos .class , debe estar en la carpeta que contiene las carpetas de nombres de paquetes de Java .

Entonces, al tener el archivo .class en ./target/classes/com/foo/app/App.class , tiene las siguientes posibilidades:

java -cp target/classes com.foo.app.App CLASSPATH=target/classes java com.foo.app.App cd target/classes && java com.foo.app.App

Puede verificar su classpath, imprimiendo la variable CLASSPATH :

  • Linux: echo $CLASSPATH
  • Windows: echo %CLASSPATH%

que tiene entradas separadas por :

Ver también: ¿Cómo puedo ejecutar archivos Java .class?


Cree una carpeta org / tij / exercises y luego mueva el archivo HelloWorld.java. Luego ejecuta el comando debajo

javac -cp . org/tij/exercises/HelloWorld.java

Y

java -cp . org/tij/exercises/HelloWorld


Cuando la clase principal está dentro de un paquete, debe ejecutarla de la siguiente manera:

java <packageName>.<MainClassName>

En su caso, debe ejecutar el programa de la siguiente manera:

java org.tij.exercises.HelloWorld


Ejecute su programa Java usando java -d . HelloWorld Comando java -d . HelloWorld .

Este comando funciona cuando has declarado el paquete.

. representar el directorio actual /.


Enfrenté el mismo problema e intenté con todo lo mencionado aquí. El caso es que no actualicé mi proyecto en eclipse después de la creación de la clase. Y una vez que lo refresqué las cosas funcionaron como se esperaba.


Obtuve exactamente el mismo error al olvidar eliminar la extensión .class cuando ejecuté la clase JAVA. Entonces en vez de esto:

java myClass.class

Uno debería hacer esto:

java myClass


Para muchos de nosotros, al menos para mí, creo que la jerarquía de la ruta de clases no es intuitiva ya que estoy trabajando dentro de una estructura de directorios y se siente como debería ser.

Java está buscando el nombre de la clase en función de la ruta del paquete, no solo de la ruta del archivo.

No importa si: estoy en el directorio local ./packagefoo/MainClass, o un directorio arriba ./packagefoo/, o uno abajo ./packagefoo/MainClass/foo.

El comando "java packagefoo.MainClass" se está ejecutando desde la raíz% CLASSPATH%, lo que significa algo significativo para Java. Luego, desde allí, atraviesa los nombres de los paquetes, no nombres de ruta como nosotros, los codificadores de lo que cabría esperar.

Entonces, si mi CLASSPATH está configurada en% CWD% /, entonces funcionará "java packagefoo.MainClass". Si configuro CLASSPATH en% CWD% / packagefoo / then packagefoo.MainClass no se puede encontrar. Siempre "java MainClass" no significa nada, si es miembro de "paquete", hasta que arranco el código java "package packagefoo"; y mueva el archivo de clase a un directorio.

De hecho, si cambio "package packagefoo"; para "empaquetar foopackage"; Tengo que crear una subcarpeta en CLASSPATH / foopackage o foopackage.MainClass deja de funcionar de nuevo.

Para empeorar las cosas, entre PATH, CLASSPATH, JAVAHOME, para Windows, JDeveloper, Oracle Database y cada nombre de usuario con el que se instaló, creo que un codificador que intenta obtener algo rápidamente termina forzando brutales variables de ruta y estructura hasta que algo funciona sin entender lo que significa.

al menos yo lo hice


Quité bin de CLASSPATH . Descubrí que estaba ejecutando el comando java desde el directorio donde se encuentra HelloWorld.java , es decir:

C:/Users/xyz/Documents/Java/javastudy/src/org/tij/exercises>java HelloWorld

Así que volví al directorio principal y ejecuté:

java org.tij.exercises.HelloWorld

y funcionó, es decir:

C:/Users/xyz/Documents/Java/javastudy/src>java org.tij.exercises.HelloWorld

¡¡Hola Mundo!!


Tuve el mismo problema, el mío era un poco diferente, aunque no tenía un nombre de paquete. Mi problema era la ruta de clase, por ejemplo:

C:/Java Example>java -cp . HelloWorld

La opción -cp para Java y por lo que puedo decir de mi experiencia (no mucho) pero encontré el error unas 20 veces probando diferentes métodos y hasta que declare que la clase Path I estaba recibiendo el mismo error. Vishrant tenía razón al afirmar eso. representa el directorio actual.

Si necesita más información sobre las opciones de Java, ingrese java -? o java -help creo que las opciones no son opcionales.

Investigué un poco más y encontré un sitio web que detalla CLASSPATH . El CLASSPATH debe establecer como una variable de entorno; al directorio actual <.>. Puede configurarlo desde la línea de comando en Windows:

// Set CLASSPATH to the current directory ''.'' prompt> set CLASSPATH=.

Cuando agrega una nueva configuración de entorno, debe reiniciar antes de habilitar la variable. Pero desde el símbolo del sistema puede configurarlo. También se puede configurar como mencioné al principio. Para obtener más información, y si usa un SO diferente, verifique: Variables de entorno .


Tuve un problema similar al ejecutar Java en win10

en lugar de

$ java ./hello Error: Could not find or load main class ..hello

correr

$ java hello Hello, World


Una razón para este error podría ser

No se pudo encontrar o cargar la clase principal <class name>

Tal vez use su nombre de clase como un nombre diferente y guarde el nombre de la clase con otro nombre. Puede guardar un nombre de archivo de origen java por otro nombre que no sea el nombre de clase. Por ejemplo:

class A{ public static void main(String args[]) { System.out.println("Hello world"); } }

puedes guardar como Hello.java pero,

Para compilar: javac Hello.java

Esto generará automáticamente el archivo A.class en la misma ubicación.

Ahora para ejecutar: java A


enfrenta el mismo problema resuelto siguiendo estos pasos

  • vaya al directorio que contiene el paquete ''org.tij.exercises'' (por ejemplo: en eclipse puede ser su carpeta src)
  • usa java org.tij.exercises.HelloWorld