Forum Programmation.java GCJ/GIJ + AWT

Posté par  (site web personnel) .
Étiquettes :
0
27
sept.
2005
C'est la première fois que j'essaye d'utiliser gcj/gij et je connais très peu java.

Voici un petit code source tiré de LinuxJournal :

import java.awt.*;
import java.awt.event.*;

public class ExampleAWT extends Frame {
ExampleAWT() {
super("AWT");

Label msgLabel = new Label("Quit?");
Button yesButton = new Button("Yes");
Button noButton = new Button("No");

Panel buttonbox = new Panel();
buttonbox.setLayout(new FlowLayout());
buttonbox.add(yesButton);
buttonbox.add(noButton);

Panel msgbox = new Panel();
msgbox.setLayout(new FlowLayout());
msgbox.add(msgLabel);

add(msgbox, BorderLayout.NORTH);
add(buttonbox, BorderLayout.SOUTH);

yesButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { System.exit(0); }
});

noButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { System.exit(1); }
});

addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}

public static void main(String[] args) {
ExampleAWT frame = new ExampleAWT();
frame.pack();
frame.setVisible(true);
}
}


Le programme se compile bien à priori :

gcj -C ExampleAWT.java me fabrique un ExampleAWT.class mais quand je le passe à GIJ, ce dernier apprécie peu :

jerome@glop:~/prog$ gij ExampleAWT
Exception in thread "main" java.awt.AWTError: Cannot load AWT toolkit: gnu.awt.gtk.GtkToolkit not found in [file:./, core:/]
at java.awt.Toolkit.getDefaultToolkit() (/usr/lib/libgcj.so.4.0.0)
at java.awt.Component.getToolkit() (/usr/lib/libgcj.so.4.0.0)
at java.awt.Container.addImpl(java.awt.Component, java.lang.Object, int) (/usr/lib/libgcj.so.4.0.0)
at java.awt.Container.add(java.awt.Component) (/usr/lib/libgcj.so.4.0.0)
at ExampleAWT.ExampleAWT() (Unknown Source)
at ExampleAWT.main(java.lang.String[]) (Unknown Source)

Idem pour la compilation en natif :

jerome@glop:~/prog$ gcj --main=ExampleAWT -o ExampleAWT ExampleAWT.java
jerome@glop:~/prog$ ./ExampleAWT
Exception in thread "main" java.awt.AWTError: Cannot load AWT toolkit: gnu.awt.gtk.GtkToolkit not found in [file:./, core:/]
at java.awt.Toolkit.getDefaultToolkit() (/usr/lib/libgcj.so.4.0.0)
at java.awt.Component.getToolkit() (/usr/lib/libgcj.so.4.0.0)
at java.awt.Container.addImpl(java.awt.Component, java.lang.Object, int) (/usr/lib/libgcj.so.4.0.0)
at java.awt.Container.add(java.awt.Component) (/usr/lib/libgcj.so.4.0.0)
at ExampleAWT.ExampleAWT() (Unknown Source)
at ExampleAWT.main(java.lang.String[]) (Unknown Source)

libgcj4-awt est installé. Manque t il quelque chose ? GIJ se définit comme un interpréteur ; peut on le considérer comme l'équivalent de la machine virtuelle java ? GIJ peut il executer certaines applets que l'on rencontre sur le web ?

jerome@glop:~/prog$ java -version
gij (GNU libgcj) version 3.3.5 (Debian 1:3.3.5-13)

Copyright (C) 2002 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Et, spécial Debian :

jerome@glop:~/prog$ dpkg -S /usr/bin/java
dpkg : /usr/bin/java introuvable.

Merci pour vos réponses.
  • # Trop vieux :)

    Posté par  (site web personnel) . Évalué à 1.

    Ton gcc est beaucoup trop vieux, pour avoir un support de AWT/SWING qui commence à être correcte, il faut que tu utilise au moins gcc4 (sur ma gentoo gcc-4.0.1 ton code fonctionne et s'exécute correctement).
    Fait attention car je ne connais pas les découpages des paquets gcc chez debian puisque c'est ton OS, mais tu dois avoir un paquets spécifique pour le support awt/swing.

    Pour info ton code passe à la compilation, car dans la libgcj, tu avais beaucoup de classe dont le squelette a été créé, mais non rempli, don non fonctionnel.
  • # /usr/bin/java

    Posté par  . Évalué à 2.

    Je peuxpas t'aider pour le reste, mais

    > jerome@glop:~/prog$ dpkg -S /usr/bin/java
    > dpkg : /usr/bin/java introuvable.

    c'est parce que /usr/bin/java est un lien vers /etc/alternative, créé par un script de post-install, et n'appartient à aucun fichier.

    Pour savoir ce qui est utilisé par la commande "java", il faut regarder ou pointe /etc/alternative/java

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.