Exception in thread "main" java.lang.NoClassDefFoundError: IU
-
Gente
Les pido si pueden darme una mano con esto, de repente se me pincho el paquete de JAVA en mi maquina o no se que paso, me esta dando el siguiente error cuando quiero ejecutar un programa punto java (cualquiera, probe con varios y da el mismo). Son programas simples ya que son los de la facu, el compilador me anda perfecto pero cuando lo quiero ejectuar por DOS me da el siguiente error:
c:\>java ejemplo.java
Exception in thread "main" java.lang.NoClassDefFoundError: IU
c:\>
Estos medio desesperado porque el Martes que viene rindo y necesito hacer funcionar esto de nuevo ya que necesito practicar. La version que tengo instalada es la siguiente (tengo windows XP en la maquina )
C:\>java -version
java version "1.4.2_10"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_10-b03)
Java HotSpot(TM) Client VM (build 1.4.2_10-b03, mixed mode)
Si alguno sabe como solucionar esto le voy a agradecer su ayuda.
Muchas gracias
Saludos, Pablo -
Te comento un poco que es lo que pasa y que significa que al querer ejecutar te lance la excepcion NoClassDefFoundException...
El tema comienza porque vos en el IDE que usas, Eclipse, NetBeans, JDeveloper, JBuilder etc, en algun momento le seteas el classpath, que es una cierta ruta donde va a buscar las definiciones e implementacion de clases que usa tu proyecto al momento de ejecutarse, seria el path donde se encuentran las librerias DLL de C++ en cualquier aplicacion c++, pero en Java.
El tema es de que el IDE tiene seteado el classpath, y los JARS (Librerias Java) dependientes que usa tu proyecto, y te funca barabro, pero al querer ejecutarlo en linea de comandos, vos no le estas proporcionando ninguna informacion de cual es el classpath que vas a usar, de ahi como en tu codigo usas una libreria y en el classpath por defecto no la encuentra el compilador o interpretador lanza una excepcion de tipo NoClassDefFoundExcepcion que significa "No se encontro la definicion de esta clase, por eso te lanzo esta excepcion"-
La unica solucion a eso, es setear correctamente el classpath antes de ejecutar tu aplicacion, en la linea de comandos.
Ahora yo no se como es tu codigo ni que JARS dependientes usas, asi que te voy a dar un pequeño ejemplo de una aplicacion que necesita los siguientes 3 jars: Log4j.jar, dom4j.jar y xerces.jar que se encuentran en el directorio c:\jars
Para ejecutar esa aplicacion tenes 2 opciones: la primera es setear el classpath como variable de entorno del sistema operativo, y luego poner a correr la aplicacion, o sino pasarle el classpath como una opcion al interpretador de java.
La primera opcion es:
c:\>set classpath = %classpath%;c:\jars\log4j.jar;c:\jars\dom4j.jar;c: \xerces.jar
c:\javac Ejemplo.java
c:\java Ejemplo.class
Con eso setié el classpath a todo lo que tiene actualmente el classpath mas los 3 jars que necesito, luego puse a compilar la clase Ejemplo.java y luego la puse a correr, notese que use para correrla java Ejemplo.class (fijense la extension, si, .class)
La otra forma es mediante la directiva -cp de tanto el compilador de java como la del interpretador de java
c:\javac -cp "c:\jars\log4j.jar;c:\dom4j.jar;c:\xerces.jar" Ejemplo.java
c:\java -cp "c:\jars\log4j.jar;c:\dom4j.jar;c:\xerces.jar" Ejemplo.class
De esta forma le seteo el classpath mediante la opcion -cp
En principio eso deberia funcar de lo mas bien.
Saludos
PABLO -
-
Melómano empedernido -
11/06/2006#4 Re: Exception in thread "main" java.lang.NoClassDefFoundError: IUSupongo que IU es una clase de soporte de la facultad para manejo de Entrada/Salida, linea de comandos, manejo de System.in, etc... En ese caso te está dando ese error porque -puede ser- que esté en un .jar o un .zip o en otro directorio y no lo estes referenciando como parte del classpath (O sea, directorios y .jars que tienen clases que deben estar "cargables" en el contexto del compilador -al compilar- y de la virtual machine -al ejecutar-).Escrito por pnvcabj
Si en la facu te dieron algun archivo extra (un .zip) por ejemplo, seguramente en alguno estará/n la/ clase/s que no puede encontrar la virtual machine. Si cuando compilas pones:Cuando ejecutas debes ponerCódigo:c:\>javac -cp "path.del.archivo" ejemplo.java
(no se pone .class!!!)Código:c:\>java -cp "path.del.archivo" ejemplo
Tambien habría que ver si estas usando packages o no.. es una mala costumbre de las universidades no enseñar algo tan fundamental como es el uso de packages en java.
Saludos,
Guido -
-
Mi comentario apunta a que, si el niño estudia una carrera de las cs informáticas o afines, me parece correcto que no confunda conceptos y hable con propiedad sobre el campo en el cuál pretende convertirse en un profesional. Ergo, vi la oportunidad para remarcar el error, para que él y que muchos otros también tomen nota.
Te felicito por tu comentario, aportó muchísimo al tema en cuestión? -
Me parece que el problema es mas sencillo lo único que tienes que hacer es agregar a tu variable de entorno CLASSPATH el valor .; sin comillas, que traducido en castellano es lo siguiente:
Inicio > Panel de Control > Sistema > Opciones Avanzadas > Variables de Entorno
En la tabla de abajo seleccionas CLASSPATH > Modificar y en el campo de texto de abajo agregas .;
Espero que te sirva -
