# HeadlessException



## 12726 (22. Jan 2011)

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 (22. Jan 2011)

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. "


----------



## 12726 (22. Jan 2011)

In Zeile 48


----------



## 12726 (22. Jan 2011)

eRaaaa hat gesagt.:


> Das ist eine UnsupportedOperationException :



Was heißt das für mich?


----------



## 12726 (22. Jan 2011)

Unser Dozent hat exakt diesen Quelltext im Skript stehen.
Wo ist denn der Fehler?


----------



## 12726 (22. Jan 2011)

Ich benutze übrigens Ubuntu Linux. Hat das was damit zu tun?


----------



## mjdv (22. Jan 2011)

Hmm, sollte eigentlich funktionieren.

Laufen andere Swing Programme bei dir, wie JDownloader oder Geogebra?


----------



## 12726 (22. Jan 2011)

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


----------



## mjdv (22. Jan 2011)

Und der Jdownloader?

Gibt die Exception noch irgend eine detailiertere Message aus=?


----------



## JohannisderKaeufer (22. Jan 2011)

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?


----------



## JohannisderKaeufer (22. Jan 2011)

12726 hat gesagt.:


> 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 (22. Jan 2011)

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 (24. Jan 2011)

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 
	
	
	
	





```
gedit
```
 ein.
Lass dir auch mal die Belegung deiner Display Variable ausgeben:

```
printenv DISPLAY
```


----------



## 12726 (25. Jan 2011)

Ich kann gedit aus der Konsole ohne Probleme starten.

Die Displayvariable ergibt

```
printenv DISPLAY
:0.0
```


----------



## Wildcard (25. Jan 2011)

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 (25. Jan 2011)

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.


----------



## 12726 (25. Jan 2011)

Was ich allerdings merkwürdig finde ist, dass ich die Swing Demo von Java runterladen und problemlos ausführen kann..


----------



## Wildcard (25. Jan 2011)

Versuch doch mal spaßeshalber das Programm aus einer IDE heraus auszuführen (Eclipse, oder Netbeans zB).


----------



## 12726 (25. Jan 2011)

Auch das ausführen mit Eclipse funktioniert nicht... hmmm..
Aber Danke nochmal...


----------



## Wildcard (25. Jan 2011)

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 (30. Jan 2011)

Hab die Lösung gefunden. 

Das System hat versucht mit der openjdk-Variante zu kompilieren.
Um das zu ändern einfach

```
sudo update-alternatives --config java
```
ausführen und die sun-Variante auswählen.

Schon klappt es.

Danke an alle


----------



## Wildcard (30. Jan 2011)

> 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 (30. Jan 2011)

Also normalerweise arbeite ich nicht mit Eclipse. Ich schreibe den Code in gEdit und kompiliere über 

```
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 (30. Jan 2011)

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.


----------

