Impossible d'exécuter des programmes Java GUI avec Ubuntu

j'apprends le GUI 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.

30
demandé sur Peter Mortensen 2011-03-19 16:54:45

9 réponses

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

sudo apt-get install openjdk-6-jdk

EDIT: en fait, en regardant ma configuration, vous pourriez avoir besoin du JRE. Si c'est le cas, exécutez:

sudo apt-get install openjdk-6-jre
45
répondu Kaleb Brasee 2011-03-19 14:04:20

j'ai cessé d'obtenir cette exception lorsque j'ai installé default-jdk en utilisant apt . J'exécute Ubuntu 14.04 (Trusty Tahr), et le problème semble avoir été le résultat de l'installation d'un Java "sans tête". Tout ce que j'ai fait, c'est:

sudo apt-get install default-jdk
10
répondu wachr 2018-02-10 02:46:31

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)

remplacement D'OpenJDK par le HotSpot VM works fine:

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

comment installer le JDK sur Ubuntu (Linux) "

2
répondu prayagupd 2018-02-10 02:45:19

dans mon cas

-Djava.awt.headless=true

a été défini (indirectement par une configuration Maven ). J'ai dû utiliser activement

-Djava.awt.headless=false

pour annuler ceci.

1
répondu Wolfgang Fahl 2018-02-10 02:47:21

vérifiez quelle est la valeur de votre affichage de la variable d'environnement. 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 expérimenter avec différentes valeurs de et variables d'environnement sur une base par invocation en faisant ce qui suit sur la ligne de commande:

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

comment appelez-vous votre programme?

0
répondu Allen 2011-03-19 14:15:49

je vérifierais avec un autre fournisseur/implémentation Java. Preferrably Oracle / Sun Java: http://www.java.com/en / . Les implémentations open-source diffèrent malheureusement de manière étrange.

0
répondu KarolDepka 2011-03-19 14:20:03

Vérifiez vos variables d'environnement X Window en utilisant la commande" env".

0
répondu KarolDepka 2018-02-10 01:58:41

utilisez JFrame au lieu de Frame. Et ne vous étendez pas à partir de JFrame. Il suffit d'écrire une classe qui a une propriété JFrame appelée gui , qui configure ce JFrame avec les méthodes disponibles, parce qu'il est préférable de le faire comme ceci. Étendre ici est une erreur l'utilisation de L'OOP.

0
répondu Jakob Alexander Eichler 2018-02-10 02:03:01

Cette commande a fonctionné pour moi.

Sudo dnf install java-1.8.0-openjdk (Fedora)

Sudo apt-get install java-1.8.0-openjdk

devrait fonctionner pour Ubuntu.

-1
répondu Tanisha Shrotriya 2017-09-07 08:50:04