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.
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
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
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
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.
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?
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.
Vérifiez vos variables d'environnement X Window en utilisant la commande" env".
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.
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.