![]() |
El jar se ejecuta, pero se cierra solo ! Hola a todos: Apenas llevo un día metido con java, asiq ue tenganme paciencia, el problema es, tengo el siguiente archivo java: ( HolaMundo.java ) Código: 1.---> javac HolaMundo.java ( el archivo .class se crea, y lo ejecuto como applet-web y desde ms-dos con la sentencia " java HolaMundo ", todo bien ! ) 2.---> Paso a compilar un archivo .jar, entonces pongo " jar cmfv manifest.txt HolaMundo.jar HolaMundo.class " NOTA: en el archivo manifest.txt, tengo lo siguiente ( Con el salto de linea ): Código: Main-Class: HolaMundoSi lo habro desde ms-dos, me arroja este mensaje: Código: java.lang.NoClassDefFoundError: HolaMundo$1Por favor alguien que me ayude que cada vez me vuelvo mas loco :golpeado: Saludos ! |
" jar cmfv manifest.txt HolaMundo.jar HolaMundo.class " deberia ser " jar cmfv manifest.txt HolaMundo.jar *.class " ya que te esta faltando incluir el fichero HolaMundo$1.class, el cual define la clase HolaMundo$1, correspondiente a una Inner class anonima. En este caso seguramente es la clase anonima que implementa java.awt.event.WindowAdapter y creas dentro del metodo initMainInterface. Saludos |
Perfecto ! Muchisimas gracias viejo !! Solo, por favor, unas cosa mas, explicame un poquito mejor, lo de " *.class " indica que todos los archivos con extension class de ese directorio se agregaran al archivo .jar, aunque tambien pude haberlo hecho asi no? --> " jar cmfv manifest.txt HolaMundo.jar HolaMundo.class HolaMundo$1.class " ?? Y porque se creo ese archivo mas ( HolaMundo$1.class ) ? si en los pocos programas anteriores que habia compilado, solo se creaba 1, y no otro casi edintico de nombre, a que se deve ?, Agradeceria que alguien me lo explicara, para ir entendiendo mejor todo, gracias. Saludos ! |
Hola, .- Primero, no me llames "viejo" que no lo soy tanto ;-). .- Segundo, si, en este caso podrías haber usado jar... poniendo los dos ficheros. Pero en el futuro cuando hagas programas más complejos te saldran bastantes más clases y no es práctico ir poniendolas una a una, así que mejor empezar a usar lo más comodo. .- Tercero, ese archivo corresponde a una clase interna (Inner Class) que no tiene nombre, y por eso el JDK le asigna un nombre. Como es una clase interna de HolaMundo, pues le pone HolaMundo$1. Si tuvieras más clases internas, las iria llamando HolaMundo$2.. $3... Busca en un manual de Java el concepto de Inner clases anónimas y veras de donde salen. Saludos PD: Tambien sería conveniente que miraras el concepto de paquetes y lo fueras aplicando, por que en cuanto hagas algo serio, tendras que ponerlo en paquetes. |
Hola: Disculpa por lo de viejo, pero es una expresion que usamos algunas veces aca en México, refiriendonos a una persona con respeto, claro. ( Lo cambiare por, Muchisimas gracias ! :-D ). Checare eso lo de los paquetes y sobre las classes internas, gracias. Saludos ! |
Era broma, no hay nada que disculpar. Solo que nos suena un poco raro por aqui :-) |
| La zona horaria es GMT -6. Ahora son las 08:20. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.