Retroceder   Foros del Web > Programación para sitios web > Java y JSP

Respuesta
 
Herramientas Desplegado
Antiguo 30-oct-2005, 14:46   #1 (permalink)
Danger_ ha deshabilitado el karma
 
Avatar de Danger_
 
Fecha de Ingreso: diciembre-2004
Ubicación: Queretaro, México
Mensajes: 392
Triste 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:
 
 // AWT-SWING
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
 
 public class HolaMundo extends JFrame {


    // Referencia al dispositivo gráfico    
    private  GraphicsDevice gd = null;

    //-------------------------------------------------------------------------    
    /**
     * Constructor
     */
    //-------------------------------------------------------------------------     
    public HolaMundo() {

      // Primero obtenemos una referencia al entorno gráfico de ventanas
      GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
      
      // Obtenemos una referencia al dispositivo gráfico primario
      gd = ge.getDefaultScreenDevice();
      
      // Si no hay soporte adecuado lo mostramos por pantalla
      if(!gd.isFullScreenSupported())
	      System.out.println("WARNING: No hay soporte para el modo exclusivo a pantalla completa.\n");
	else
	      System.out.println("INFO: Detectado soporte para el modo exclusivo a pantalla completa.\n");

           
      try {	               

	  // Activamos el modo a pantalla completa
        gd.setFullScreenWindow(this); 

   	  // Inicializamos toda la interfaz gráfica
        initMainInterface();
	  
      }
      catch(Throwable e) {        
        e.printStackTrace();
        System.out.println("ERROR CRITICO: "+e.getMessage());
        exit();
      }

    }//constructor

    //-------------------------------------------------------------------------
    /**
     *
     */
    //-------------------------------------------------------------------------
    public static void main(String args[])
    {

      HolaMundo hm = new HolaMundo();

    }//main

    //-------------------------------------------------------------------------
    /**
     *
     * Inicialización de la interfaz gráfica. Aquí pondremos todos los
     * elementos que nosotros deseemos, botones, paneles, tablas, etc.
     *
     */
    //-------------------------------------------------------------------------
    public void initMainInterface() throws Exception {
	    
	    // WindowListener para cerrar la aplicación al cerrar la ventana	    
	    this.addWindowListener(new java.awt.event.WindowAdapter() {
	      public void windowClosing(WindowEvent e) {
		exit();
	      }
	    });	    

		
	    // Aqui añadimos una etiqueta en la "ventana" con la cadena HolaMundo
	    this.getContentPane().add(new JLabel("HOLA MUNDO!"));
	    this.setVisible(true);

	    
    }//initMainInterface

   //-------------------------------------------------------------------------
   /**
    *
    * Finaliza la aplicación
    *
    */
   //------------------------------------------------------------------------- 
   public void exit() {

      // volvemos al modo de pantalla en el que estabamos
      gd.setFullScreenWindow(null);
      
      // salimos de la aplicación
      System.exit(0);

    }//exit

 }//Main
Bien entonces lo que hago es lo siguiente:

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: HolaMundo
El archivo jar se crea correctamente, y si lo ejecuto con dobleclick, o desde ms-dos, se abre, y se cierra inmediatamente la ventana .

Si lo habro desde ms-dos, me arroja este mensaje:

Código:
java.lang.NoClassDefFoundError: HolaMundo$1
        at HolaMundo.initMainInterface(HolaMundo.java:94)
        at HolaMundo.<init>(HolaMundo.java:60)
        at HolaMundo.main(HolaMundo.java:79)
ERROR CRITICO: HolaMundo$1
Ah si !, tambien se crea un archivo HolaMundo$1.class, porque, no lo se !

Por favor alguien que me ayude que cada vez me vuelvo mas loco

Saludos !
Danger_ está desconectado   Responder Citando
Antiguo 31-oct-2005, 02:22   #2 (permalink)
GreenEyed tiene algunos puntos positivos de karma
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.487
" 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
GreenEyed está desconectado   Responder Citando
Antiguo 31-oct-2005, 18:03   #3 (permalink)
Danger_ ha deshabilitado el karma
 
Avatar de Danger_
 
Fecha de Ingreso: diciembre-2004
Ubicación: Queretaro, México
Mensajes: 392
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 !
Danger_ está desconectado   Responder Citando
Antiguo 01-nov-2005, 05:34   #4 (permalink)
GreenEyed tiene algunos puntos positivos de karma
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.487
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.
GreenEyed está desconectado   Responder Citando
Antiguo 01-nov-2005, 07:51   #5 (permalink)
Danger_ ha deshabilitado el karma
 
Avatar de Danger_
 
Fecha de Ingreso: diciembre-2004
Ubicación: Queretaro, México
Mensajes: 392
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 ! ).

Checare eso lo de los paquetes y sobre las classes internas, gracias.

Saludos !
Danger_ está desconectado   Responder Citando
Antiguo 02-nov-2005, 07:58   #6 (permalink)
GreenEyed tiene algunos puntos positivos de karma
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.487
Sonrisa

Era broma, no hay nada que disculpar. Solo que nos suena un poco raro por aqui
GreenEyed está desconectado   Responder Citando
Respuesta
No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Desactivado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 06:13.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93