HeadlessException

12726

Mitglied
Hallo zusammen,

ich versuche gerade eine kleine GUI zu schreiben allerdings bekomme ich immer eine java.awt.HeadlessException. Um herauszufinden woran es liegt habe ich das ganze so kurz formuliert wie nur möglich und immernoch diese Fehlermeldung.
Das ist der Code:
[JAVA=42]
import javax.swing.*;

public class GUI{

public static void main(String[] args){

JFrame frame = new JFrame("Foo");
frame.setVisible(true);


}
}
[/code]

Der Fehler tritt angeblich in Zeile 7 auf.
Aber warum?

Grüße
 

eRaaaa

Top Contributor
Das ist eine UnsupportedOperationException :

http://download.oracle.com/javase/6/docs/api/java/awt/HeadlessException.html hat gesagt.:
"Thrown when code that is dependent on a keyboard, display, or mouse is called in an environment that does not support a keyboard, display, or mouse. "
 
J

JohannisderKaeufer

Gast
Welches Ubuntu?

Server-Edition?

OpenJDK oder Sun SDK oder etwas anderes?

Ich könnte mir durchaus vorstellen das die Server Version von Ubuntu, das eigentlich ohne GUI (Gnome) geliefert wird auch eine Javaversion mitbringt in der GUI komponenten nicht vorhanden oder deaktiviert sind und bleiben, selbst, wenn man Gnome oder eine andere GUI installiert.

Denn wer soll ein JFrame sehen können, wenn es keine Grafische Benutzeroberfläche gibt?
 
J

JohannisderKaeufer

Gast
Ja Geogebra läuft ganz normal.
Danke für die Rückmeldung

Das Geogebra läuft hat eigentlich nicht unbedingt was zu sagen.
JDK und JRE sind unter Ubuntu zwei paar Schuhe.

Du kannst dein System so einstellen, daß du mit dem OpenJDK compilierst, Programme allerdings mit dem SUN JRE ausgeführt werden.
 

12726

Mitglied
Ja soviele Fragen...
Also ich habe die ganz normale Desktop-Ubuntu Version mit Gnome, wenn das die Frage ist, falls nicht brauch ich ne Erklärung..

Also ich habe, da ich auch mit Android ein wenig programmiere, die Version von Sun installiert.
Ob ich allerdings auch damit kompiliere weiß ich nicht genau, wie kann ich das nachgucken?

Die Exception gibt mir keine Informationen mehr.

Danke an alle
 

Wildcard

Top Contributor
Diese Exception bekommst du in der Regel auf einem Server System auf dem kein X Server läuft.
Wenn du das auf einem Desktop System (lokal, also nicht per SSH, oder solche Späße) erhälst, dann ist irgendetwas an deiner Konfiguration im Argen.
Führst du das von einer Konsole aus? Wenn ja, versuch mal ob du in deiner Konsolenumgebung überhaupt ein Programm mit UI starten kannst. Gibt zB mal
Code:
gedit
ein.
Lass dir auch mal die Belegung deiner Display Variable ausgeben:
Code:
printenv DISPLAY
 

12726

Mitglied
Ich kann gedit aus der Konsole ohne Probleme starten.

Die Displayvariable ergibt
Code:
printenv DISPLAY
:0.0
 

Wildcard

Top Contributor
Dann ist das Problem nicht dein Environment, sondern die Java Installation.
Kann dir aus dem stehgreif jetzt leider auch nicht sagen warum sich dein Java nicht zum X-Server verbinden kann.
Das java.awt.headless Property hast du hoffentlich nicht irgendwo händisch auf true gesetzt, oder?
 

12726

Mitglied
Nein das hab ich nicht gemacht.
Hab allerdings versucht das in der main dann irgendwie per Hand zu ändern -ohne Erfolg- damit es funktioniert, aber erst nachdem es nicht geklappt hat.
 

Wildcard

Top Contributor
Binde in Eclipse mal eine andere JRE Version ein (in den Preferences) und versuch es damit.
Ich würde dir gerne konkretere Tipps geben, aber dieses Problem ist mir so auch noch nicht untergekommen, irgendetwas scheint mit deiner JRE nicht zu stimmen
 

12726

Mitglied
Hab die Lösung gefunden.

Das System hat versucht mit der openjdk-Variante zu kompilieren.
Um das zu ändern einfach
Code:
sudo update-alternatives --config java
ausführen und die sun-Variante auswählen.

Schon klappt es.

Danke an alle
 

Wildcard

Top Contributor
Das System hat versucht mit der openjdk-Variante zu kompilieren.

Nein, kompiliert wird immer mit dem Eclipse Compiler, du meinst ausführen. Dafür brauchst du auch kein update-alternatives, einfach die JRE in Eclipse umstellen.
Allerdings hätte eine einfache Swing Applikation auch mit OpenJDK laufen müssen...
 

12726

Mitglied
Also normalerweise arbeite ich nicht mit Eclipse. Ich schreibe den Code in gEdit und kompiliere über
Code:
javac name.java
in der Konsole.

Nach dem update-alternatives funktioniert es ohne Probleme. Das reicht mir erstmal muss ich sagen ;)
Falls du jedoch noch irgendwelche Ideen hast bin ich ganz Ohr.
Danke für deine Hilfe.

Grüße
 

Murray

Top Contributor
Da es sich bei dieser Fehlermeldung um einen Laufzeitfehler handelt, dürfte es fast egal sein, ob man Eclipse verwendet oder die Sourcen "zu Fuß" übersetzt - zur Laufzeit muss die Java-Umgebung GUI-Features unterstützen - was sie i.d.R. tut, solange man nicht in einer reinen Server-Umgebung bewegt.
 

Neue Themen


Oben