Foro de elhacker.net

Programación => Java => Mensaje iniciado por: MauroMasciar en 12 Octubre 2011, 00:23 am



Título: [GCJ] No carga bien y se cuelga
Publicado por: MauroMasciar en 12 Octubre 2011, 00:23 am
Siguiendo Google y el comentario que hizo Leyer hace ya un tiempo...

[ Linux ]

Install:
Código:
sudo apt-get install gcj

Generas el .o
Código:
gcj -c -g -O file.java


Compilas
Código:
gcj --main=file -o file file.o


Compila todo bien, pero cuando lo ejecuto con:
./nombrefichero

Me queda así (Después de hacer un clic después de pasar un buen tiempo sin cargar...)

(http://mauromasciar.net84.net/problemagcj/tildado.png)

La primera vez que lo ejecute, cargo bien, hasta que hice clic...

El programa es asi: (Compilado con javac)

(http://mauromasciar.net84.net/problemagcj/andabien.png)

Que podre hacer para solucionarlo?
No se mucho de este tema (GCJ), si necesitan algo mas de información, solo pídanlo...
Y de pasada, llegue a esto, para que no se pueda descubrir el código, como lo es tan fácil con los .class

Gracias por adelantado...



Título: Re: [GCJ] No carga bien y se cuelga
Publicado por: Debci en 12 Octubre 2011, 10:47 am
Mas que por parte de GCJ, puesto que dices que compila sin errores, debe haber algún problema con el código de la interfaz, como dices tu mismo, probablemente la rutina asignada al actionPerformed del botón debe tener algo que provoca el desborde del programa y su correspondiente crash.

Si nos pasas el código te podremos orientar, pero pondría la mano en el fuego a que no es el compilador puesto que no muestra error alguno.

Un saludo


Título: Re: [GCJ] No carga bien y se cuelga
Publicado por: MauroMasciar en 12 Octubre 2011, 17:59 pm
Hola @Debci...
Gracias por responder...

Aclaro, el clic es en cualquier parte de la ventana, no solo en el boton, aparte de que ni siquiera carga los componentes, como se ve...
El código es este:

Código
  1. import javax.swing.JFrame;
  2. import javax.swing.JTextField;
  3. import javax.swing.JButton;
  4. import java.awt.FlowLayout;
  5. import java.awt.event.ActionEvent;
  6. import java.awt.event.ActionListener;
  7. import java.sql.SQLException;
  8. import java.sql.Connection;
  9. import java.sql.Statement;
  10. import java.sql.DriverManager;
  11.  
  12. class insertarDatos extends JFrame implements ActionListener {
  13.  
  14.    JTextField txtDato = new JTextField(20);
  15.    JButton btnInsertar = new JButton("Insertar");
  16.  
  17.    public insertarDatos() {
  18.        super("Insertar datos desde JTextField a MySQL");
  19.        setSize(360, 110);
  20.        getContentPane().setLayout(new FlowLayout());
  21.        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  22.  
  23.        add(txtDato);
  24.        add(btnInsertar);
  25.  
  26.        btnInsertar.addActionListener(this);
  27.  
  28.        setVisible(true);
  29.    }
  30.  
  31.    public void actionPerformed(ActionEvent evt) {
  32.        if (btnInsertar == evt.getSource()) {
  33.            final String drv = "com.mysql.jdbc.Driver";
  34.            final String db = "jdbc:mysql://localhost:3328";
  35.            final String user = "Mauro";
  36.            final String pass = "masciarcomputacion";
  37.            Connection ct;
  38.            Statement st;
  39.            try {
  40.                Class.forName(drv);
  41.                ct = DriverManager.getConnection(db, user, pass);
  42.                st = ct.createStatement();
  43.  
  44.                String insertar = "INSERT INTO Cuentas (Nombre) VALUES ('" + txtDato.getText() + "')";
  45.  
  46.                st.executeUpdate(insertar);
  47.  
  48.                ct.close();
  49.                st.close();
  50.            } catch (SQLException ex) {
  51.                System.out.println(ex.getMessage());
  52.            } catch (ClassNotFoundException ex) {
  53.                System.out.println(ex.getMessage());
  54.            } catch (Exception ex) {
  55.                System.out.println(ex.getMessage());
  56.            }
  57.        }
  58.    }
  59.  
  60.    public static void main(String[] args) {
  61.        insertarDatos app = new insertarDatos();
  62.    }
  63. }


Título: Re: [GCJ] No carga bien y se cuelga
Publicado por: Debci en 15 Octubre 2011, 13:46 pm
Intenta ejecutando desde la consola, y mira que tipo de error da, es lo mas sensato, podría ser que haga mal la conexión a la BD, aunque en principio por lo que me comentas no tiene nada que ver.
No he mirado el código con atención pero en cuanto llegue a casa le hecho un ojo.

Un saludo


Título: Re: [GCJ] No carga bien y se cuelga
Publicado por: klaine en 16 Octubre 2011, 06:23 am
Ni idea que es GCJ  :D , pero veo que lo haces en linux...

Si de algo sirve probé tu code en netbeans en windows y me funko, con la conexion y todo, con suerte un warning incoherente (linea 26, leaking this in constructor), pero nada importante....

Saludos!


Título: Re: [GCJ] No carga bien y se cuelga
Publicado por: MauroMasciar en 16 Octubre 2011, 19:18 pm
Ni idea que es GCJ  :D , pero veo que lo haces en linux...

Si de algo sirve probé tu code en netbeans en windows y me funko, con la conexion y todo, con suerte un warning incoherente (linea 26, leaking this in constructor), pero nada importante....

Saludos!

Por supuesto que anda en Netbeans y en Javac, el problema es con GCJ

Intenta ejecutando desde la consola, y mira que tipo de error da, es lo mas sensato, podría ser que haga mal la conexión a la BD, aunque en principio por lo que me comentas no tiene nada que ver.
No he mirado el código con atención pero en cuanto llegue a casa le hecho un ojo.

Un saludo

Hola...
Esta es la salida:

Código:
mauro@Masciar:~/Escritorio/problema gcj$ gcj -c -g -O Main.java
Main.java:12: warning: The serializable class Main does not declare a static final serialVersionUID field of type long
class Main extends JFrame implements ActionListener {
     ^^^^
Main.java:61: warning: The local variable app is never read
Main app = new Main();
    ^^^
2 problems (2 warnings)
mauro@Masciar:~/Escritorio/problema gcj$ gcj --main=Main -o mn Main.o
mauro@Masciar:~/Escritorio/problema gcj$ ./mn
^C
mauro@Masciar:~/Escritorio/problema gcj$

Algo mal con la db? Pero se ejecuta el codigo de la bd sin presionar el boton?

Ni siquiera me anda un simple holamundo

Código
  1. import javax.swing.*;
  2. import java.awt.*;
  3.  
  4. class holamundo extends JFrame {
  5. JLabel lbl = new JLabel("Hola mundo");
  6. public holamundo() {
  7. super("Hola mundo");
  8. getContentPane().setLayout(new FlowLayout());
  9. setSize(800, 600);
  10. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  11.  
  12. add(lbl);
  13.  
  14. setVisible(true);
  15. }
  16.  
  17. public static void main(String[] args) {
  18. holamundo app = new holamundo();
  19. }
  20. }

Código:
mauro@Masciar:~/Escritorio/problema gcj$ gcj -c -g -O holamundo.java
holamundo.java:4: warning: The serializable class holamundo does not declare a static final serialVersionUID field of type long
class holamundo extends JFrame {
     ^^^^^^^^^
holamundo.java:16: warning: The local variable app is never read
holamundo app = new holamundo();
         ^^^
2 problems (2 warnings)
mauro@Masciar:~/Escritorio/problema gcj$ gcj --main=holamundo -o holados holamundo.o
mauro@Masciar:~/Escritorio/problema gcj$ ./holados
Terminado (killed)

Pasa lo mismo...

Y mira esto:

Código:
mauro@Masciar:~/Escritorio/problema gcj$ javac holamundo.java 
mauro@Masciar:~/Escritorio/problema gcj$ java holamundo
16/10/2011 14:11:03 com.sun.corba.se.impl.ior.IORImpl getProfile
ADVERTENCIA: "IOP00511201: (INV_OBJREF) IOR must have at least one IIOP profile"
org.omg.CORBA.INV_OBJREF:   vmcid: SUN  minor code: 1201  completed: No
at com.sun.corba.se.impl.logging.IORSystemException.iorMustHaveIiopProfile(IORSystemException.java:473)
at com.sun.corba.se.impl.logging.IORSystemException.iorMustHaveIiopProfile(IORSystemException.java:495)
at com.sun.corba.se.impl.ior.IORImpl.getProfile(IORImpl.java:334)
at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_Object(CDRInputStream_1_0.java:787)
at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_Object(CDRInputStream_1_0.java:761)
at com.sun.corba.se.impl.encoding.CDRInputStream.read_Object(CDRInputStream.java:231)
at com.sun.corba.se.impl.resolver.INSURLOperationImpl.getIORFromString(INSURLOperationImpl.java:120)
at com.sun.corba.se.impl.resolver.INSURLOperationImpl.operate(INSURLOperationImpl.java:130)
at com.sun.corba.se.impl.orb.ORBImpl.string_to_object(ORBImpl.java:836)
at org.GNOME.Accessibility.AccessUtil.getRegistryObject(AccessUtil.java:143)
at org.GNOME.Accessibility.JavaBridge.registerApplication(JavaBridge.java:1147)
at org.GNOME.Accessibility.JavaBridge.<init>(JavaBridge.java:398)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:532)
at java.lang.Class.newInstance0(Class.java:372)
at java.lang.Class.newInstance(Class.java:325)
at java.awt.Toolkit.loadAssistiveTechnologies(Toolkit.java:786)
at java.awt.Toolkit.getDefaultToolkit(Toolkit.java:875)
at java.awt.Window.getToolkit(Window.java:1170)
at java.awt.Window.init(Window.java:400)
at java.awt.Window.<init>(Window.java:438)
at java.awt.Frame.<init>(Frame.java:419)
at javax.swing.JFrame.<init>(JFrame.java:218)
at holamundo.<init>(holamundo.java:7)
at holamundo.main(holamundo.java:18)

Tendra algo que ver eso? Hace rato me salta eso, pero el programa fuciona correctamente...

Saludos...

--

Edit: Solucione este error:
Código:
holamundo.java:4: warning: The serializable class holamundo does not declare a static final serialVersionUID field of type long

Aplicando esto en el código:

Código
  1. private static final long serialVersionUID = 1L;

Pero sigue andando mal...