web-dev-qa-db-fra.com

Impossible d'exécuter Java GUI avec Ubuntu

J'apprends l'interface graphique en Java, et pour cela j'ai créé un programme de démonstration:

import Java.awt.*;

public class FrameDemo extends Frame {

    public FrameDemo(){
        super("Frame Demo");
        setSize(200, 200);
        setVisible(true);
    }

    public static void main(String args[]){
        new FrameDemo();    
    }
}

Il a été compilé avec succès. Mais quand j'ai essayé d'exécuter le programme, j'ai trouvé l'erreur suivante:

Exception in thread "main" Java.awt.HeadlessException
    at Java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.Java:173)
    at Java.awt.Window.<init>(Window.Java:437)
    at Java.awt.Frame.<init>(Frame.Java:419)
    at FrameDemo.<init>(FrameDemo.Java:4)
    at FrameDemo.main(FrameDemo.Java:9)

J'utilise Xubuntu 10.10 et Java -version donne:

Java version "1.6.0_20"
OpenJDK Runtime Environment (IcedTea6 1.9.5) (6b20-1.9.5-0ubuntu1)
OpenJDK Client VM (build 19.0-b09, mixed mode, sharing)

Que dois-je faire?

Encore une chose: c'est le même genre d'erreur que j'ai eu quand j'ai essayé d'exécuter Dr. Java et le fichier jar de HJSplit.

33
codeomnitrix

Ubuntu a la possibilité d'installer un sans tête Java - cela signifie sans bibliothèques graphiques. Ce n'était pas toujours le cas, mais je l'ai rencontré en essayant d'exécuter un Java éditeur de texte le 10.10 l'autre jour. Exécutez la commande suivante pour installer un JDK qui a ces bibliothèques:

Sudo apt-get install openjdk-6-jdk

EDIT: En fait, en regardant ma config, vous pourriez avoir besoin du JRE. Si tel est le cas, exécutez:

Sudo apt-get install openjdk-6-jre
46
Kaleb Brasee

J'ai cessé de recevoir cette exception lorsque j'ai installé default-jdk en utilisant apt. J'utilise Ubuntu 14.04 (Trusty Tahr), et le problème semble avoir été le résultat d'un "headless" Java installé. Tout ce que j'ai fait était:

Sudo apt-get install default-jdk
10
wachr

Dans mon cas

-Djava.awt.headless=true

a été défini (indirectement par une configuration Maven ). Je devais utiliser activement

-Djava.awt.headless=false

pour remplacer cela.

3
Wolfgang Fahl

Moi aussi, j'avais OpenJDK sur ma machine Ubuntu:

$ Java -version
Java version "1.7.0_51"
OpenJDK Runtime Environment (IcedTea 2.4.4) (7u51-2.4.4-0ubuntu0.13.04.2)
OpenJDK 64-Bit Server VM (build 24.45-b08, mixed mode)

Remplacer OpenJDK par le HotSpot VM fonctionne très bien:

Sudo apt-get autoremove openjdk-7-jre-headless

Comment installer le JDK sur Ubuntu (Linux)

2
prayagupd

Vérifiez vos variables d'environnement X Window à l'aide de la commande "env".

0
KarolDepka

Utilisez JFrame au lieu de Frame. Et ne vous étendez pas depuis JFrame. Écrivez simplement une classe qui a une propriété JFrame nommée gui, qui configure ce JFrame avec les méthodes disponibles, car il est préférable de le faire comme ceci. Étendre ici est faux l'utilisation de la POO.

Vérifiez la valeur de votre variable d'environnement DISPLAY. Essayez d'exécuter une application X simple à partir de la ligne de commande. Si cela fonctionne, vérifiez la valeur de DISPLAY pour la bonne valeur.

Vous pouvez tester différentes valeurs et variables d'environnement par invocation en procédant comme suit sur la ligne de commande:

DISPLAY=:0.0 <your-Java-executable-here>

Comment appelez-vous votre programme?

0
Allen

Je vérifierais avec un autre Java implémentation/fournisseur. De préférence Oracle/Sun Java: http://www.Java.com/en/ . Les implémentations open-source diffèrent malheureusement de façon bizarre.

0
KarolDepka