excepción en el hilo ‘main’ java.lang.NoClassDefFoundError:

El siguiente progtwig está arrojando un error:

public class HelloWorld { public static void main(String args[]) { System.out.println("Hello World!"); } } CLASSPATH C:\Program Files\Java\jdk1.6.0_18\bin\ Path C:\Program Files\Java\jdk1.6.0_18\bin\ JAVAHOME C:\Program Files\Java\jdk1.6.0_18\bin 

¿Puedes decirme la causa raíz?

Encontré otro motivo común. Si crea el archivo java dentro de un paquete usando IDE como eclipse, encontrará el nombre del paquete en la parte superior de su archivo java como “package pkgName”. Si intenta ejecutar este archivo desde el símbolo del sistema, obtendrá el error NoClassDefFoundError. Elimine el nombre del paquete del archivo java y use los comandos en el símbolo del sistema. Perdió 3 horas por esto. – Abhi

En mi caso, el nombre del paquete fue escrito en minúsculas, aunque el nombre del paquete estaba en mayúscula. Abhi, muchas gracias.

 Exception in thread "main" java.lang.NoClassDefFoundError 

Uno de los lugares que java intenta encontrar su archivo .class es su directorio actual. Entonces, si su archivo .class está en C:\java , debe cambiar su directorio actual a eso.

Para cambiar su directorio, escriba el siguiente comando en el indicador y presione Entrar:

 cd c:\java 

Esto le dice a java que su classpath es su directorio local.

 Executing your program using this command should correct the problem: java -classpath . HelloWorld 

Si su paquete es helloworld , vaya al directorio principal de su paquete y luego ejecute:

 java helloworld.HelloWorld 

Ejecútelo así:

 java -jar HelloWorld.jar 

El javadoc de NoClassDefFounError en sí sería un buen comienzo ( aquí) , y luego le sugiero que limpie y reconstruya su proyecto.

Consulte http://scottizu.wordpress.com/2013/08/28/fixing-the-exception-in-thread-main-java-lang-noclassdeffounderror-in-eclipse/ .

Esta es la forma larga de los comandos de Java que se pueden ejecutar desde un símbolo del sistema de Windows:

 "C:\Program Files\Java\jdk1.6.0_18\bin\javac.exe" -classpath "C:\Users\Scott\workspace\myproject" com\mycompany\myapp\HelloWorld.java "C:\Program Files\Java\jdk1.6.0_18\bin\java.exe" -classpath "C:\Users\Scott\workspace\myproject" com.mycompany.myapp.HelloWorld 
  1. Estos comandos se pueden ejecutar desde cualquier directorio, lo que significa que no tiene que estar en el directorio donde se encuentra su archivo HelloWorld.java.
  2. La primera línea comstack su archivo HelloWorld.java y crea un archivo HelloWorld.class.
  3. La segunda línea ejecuta el archivo HelloWorld.class.
  4. El -classpath le dice a java dónde buscar el archivo especificado en cada comando
  5. El comstackdor de Java (javac.exe) espera la ubicación del archivo java, relativo a la ruta de clases (es decir, el archivo se encuentra en C: \ Users \ Scott \ workspace \ myproject \ com \ mycompany \ myapp \ HelloWorld.java)
  6. Java (java.exe) espera el paquete (es decir, com.mycompany.myapp) y la clase (HelloWorld), relativo al classpath (es decir, el archivo se encuentra en C: \ Users \ Scott \ workspace \ myproject \ com \ mycompany \ myapp \ HelloWorld.class)

Observe que el classpath no tiene barra al final. Los comandos javac.exe esperan que el archivo finalice con “.java”. El comando java.exe espera el nombre completo de la clase y no termina con “.class”.

Hay algunas formas de simplificar estos comandos:

  1. No tiene que especificar la ruta completa a java.exe. Agregue Java a la ruta de Windows (Ejecutar-> sysdm.cpl-> Pestaña Avanzada-> Variables de entorno-> Seleccionar ruta-> Editar-> Adjuntar “; C: \ Archivos de progtwig \ Java \ jdk1.6.0_18 \ bin \”) . O puede agregar JAVA_HOME y crear esa Variable de entorno.
  2. No es necesario que ingrese la ruta de clases completa (es decir, puede usar -classpath “.”). Ingrese el directorio en el que estará trabajando:

    cd “C: \ Users \ Scott \ workspace \ myproject \”

  3. Puede usar el paquete predeterminado (ponga el directorio de archivos HelloWorld.java en su directorio de trabajo y no use la directiva del paquete Java)

Si realiza estos cambios, ejecutará algo como esto (y es posible que pueda dejar fuera -classpath “.”):

 cd "C:\Users\Scott\workspace\myproject\" javac -classpath "." HelloWorld.java java -classpath "." HelloWorld 

Esto es lo que finalmente funcionó.

 `@echo off set path=%path%;C:\Program Files\Java\jdk1.7.0_71\bin; set classpath=C:\Program Files\Java\jdk1.7.0_71\lib; cd  javac .\trainingPackage\HelloWorld.java cd .. java trainingPackage.HelloWorld REM (Make sure you are on the parent directory of the PackageName and not inside the Packagedirectory when executing java).` 

La variable CLASSPATH debe incluir el directorio donde se encuentra el archivo .class de los progtwigs Java. Puede incluir ‘.’ en CLASSPATH para indicar que se debe incluir el directorio actual.

 set CLASSPATH=%CLASSPATH%;. 

Su CLASSPATH necesita conocer la ubicación de su clase HelloWorld .

En términos simples, deberías anexar punto . (significa el directorio actual) en CLASSPATH si está ejecutando comandos javac y java desde el indicador de DOS.

Tuve el mismo problema y me topé con una solución con ‘Build Main Project F11’. La ide apareció con una “opción” que podría desear desmarcar ‘Comstackr al guardar’ en la parte Comstackción> Comstackción del diálogo de configuración del proyecto. Desmarcar ‘Complile on Save’ y luego hacer lo habitual (para mí) ‘Clean and Build’ fue el truco para mí.

Tenía el mismo problema probado soluciones anteriores, pero ninguno funcionó. Tuve que pasar por mi código java solo para encontrar que la función principal no podía ser reconocida ya que no había espacio por cierto y (Cadena) es decir, código inicial:

 public static void main(String[]args){ 

código de trabajo.

 public static void main (String[]args){ 

Espero haber ayudado a alguien

escriba lo siguiente en el indicador de cmd, dentro de su carpeta:

 set classpath=%classpath%;.; 

Tuve este error porque tenía mis archivos dentro de un paquete. Así que mi paquete foo tuve que llamar como:

java foo.HelloWorld

El problema aquí es la configuración del entorno y la ejecución del archivo de clase. a. Para establecer la ruta del entorno ejecute el siguiente comando: set path = C: \ Program Files (x86) \ Java \ jdk1.7.0 \ bin b. ejecuta el progtwig desde el paquete como com.test.TestJavaClass

Comando: java com.test.TestJavaClass

El problema general aquí es que lo ejecutemos desde dentro del paquete como src / package / name. No deberíamos incluir src, el nombre del paquete es suficiente.

Solución fácil y simple: resolví este problema (NetBeans) exportando el proyecto original a un archivo comprimido, borrando el directorio original del proyecto e importando el proyecto desde el archivo zip.

Trata de hacerlo

 javac Hello.java 

y luego, si aparece sin compiler errors (que no debería hacer porque no puedo ver ningún error en su progtwig), escriba

java Hello

Si desea ‘comstackr y ejecutar’ cualquier archivo java que haya creado utilizando cualquier IDE (como eclipse), simplemente ejecute los siguientes comandos:

Comstackr: javac Users\dhiraj01\workspace\Practice\src\PracticeLogic\Logics.java

Ejecutar: java -classpath Users\dhiraj01\workspace\Practice\src\ PracticeLogic.Logics

Pasé cuatro horas probando varias permutaciones y sugerencias de búsqueda.

Por fin, encontré esta publicación que funcionó pero no fue la mejor solución para cambiar el código original y probarlo.

  1. Intentó cambiar CLASSPATH, para incluir bibliotecas de clases, set classpath=JDKbin;JDKlib;JREbin;JRElib;myClassLib;.
  2. Cambió el directorio actual al directorio principal (carpeta del paquete) y cansó java . también probó el java ..\.

Ninguno funcionó.

Sin embargo, la primera respuesta solo funcionó. ¡Muchas gracias, Abhi!

“Encontré otro motivo común. Si creas el archivo java dentro de un paquete usando IDE como eclipse, encontrarás el nombre del paquete en la parte superior de tu archivo java como” package pkgName “. Si tratas de ejecutar este archivo desde el comando de inmediato, obtendrá el error NoClassDefFoundError. Quite el nombre del paquete del archivo java y use los comandos en el símbolo del sistema. Perdí 3 horas para esto. – Abhi ”

¿Es curioso si hay alguna otra forma de hacerlo funcionar sin tener que cambiar el código original? ¡Gracias!

si su Program.java está en el directorio “src / mypkg / subpkg /”:

ir al directorio “src”

Luego, para comstackr, use “javac mypkg / subpkg / Program.java”

Para ejecutar use “java mypkg.subpkg.Program.class”

Archivo Java:

 package com.beans; public class Flower{ ....... } packages :=> com.beans, java class Name:=> Flower.java, Folder structure (assuming):=> C:\com\beans\Flower.*(both .java/.class exist here) 

entonces hay dos formas de ejecutarlo:

 1. Goto top Folder (here its C:\>), then : C:> java com.beans.Flower 2. Executing from innermost folder "beans" here (C:\com\beans:>), then: C:\com\beans:> java -cp ./../.. com.beans.Flower