PDA

View Full Version : java.awt



mk
25-06-07, 12:53
Hallo zusammen,

bei einer Anwendung die auf die AS/400 übernommen wird
erhalte ich folgende Fehlermeldung.

Hat jemand eine Idee dazu ?

gruss
michael






java.awt.AWTError: AWT class or API used without specifying property os400.awt.native=true or java.awt.headless=true
at java.lang.Throwable.<init>(Throwable.java:195)
at java.lang.Error.<init>(Error.java:49)
at java.awt.AWTError.<init>(AWTError.java:30)
at com.ibm.as400.system.NoGraphicsEnvironment.<init>(NoGraphicsEnvironment.java:48)

BenderD
25-06-07, 13:21
Hallo,

die packages java.awt.* sind auf der AS/400 nicht ausführbar, da die AS400 keinen graphischen Datenstrom anzeigen oder drucken kann. Damit die Kaffeetasse drauf darf, gibt es da ein paar Workarounds mit einer Graphik Konsole etc., das ist aber für produktiven Einsatz nicht brauchbar, allenfalls für die Ausführung eines Installationsprozesses.

mfg

Dieter Bender


Hallo zusammen,

bei einer Anwendung die auf die AS/400 übernommen wird
erhalte ich folgende Fehlermeldung.

Hat jemand eine Idee dazu ?

gruss
michael






java.awt.AWTError: AWT class or API used without specifying property os400.awt.native=true or java.awt.headless=true
at java.lang.Throwable.<init>(Throwable.java:195)
at java.lang.Error.<init>(Error.java:49)
at java.awt.AWTError.<init>(AWTError.java:30)
at com.ibm.as400.system.NoGraphicsEnvironment.<init>(NoGraphicsEnvironment.java:48)

mk
25-06-07, 13:38
Hallo Dieter,

das ist aber schade. Gibt es denn keine Möglichkeit die
Maschine doch dazu zu bringen ?
In meinen weiteren Recherechen
bin ich z.B über das hier gestolpert:
java.awt.headless=true

Wobei ich nicht wüsste was ich damit machen sollte.

gruss
Michael

BenderD
25-06-07, 13:45
Hallo,

Problem sind nicht die Properties, sondern die Runtime für die Grafik Komponenten. Die beiden Work arounds sind:
- X-Windows Server unter PASE laufen lassen und dann kann man das auf entsprechenden Terminals anzeigen und auf der AS400 laufen lassen (nachdem man in den Sitzungen java.awt.native=true setzt)
- dann gab es (oder gibt es noch) eine Art X-Windows für Arme und Kranke namens Java AWT Konsole
letzteres ist grausam und ersteres eine etwas teure Methode auf einer AIX OS/400 laufen zu lassen, um dann eine wackelige AIX unter OS/400 laufen zu lassen...
Ich kann da nur raten: Finger weg!!!

mfg

Dieter Bender


Hallo Dieter,

das ist aber schade. Gibt es denn keine Möglichkeit die
Maschine doch dazu zu bringen ?
In meinen weiteren Recherechen
bin ich z.B über das hier gestolpert:
java.awt.headless=true

Wobei ich nicht wüsste was ich damit machen sollte.

gruss
Michael

RobertPic
26-06-07, 11:54
....
bin ich z.B über das hier gestolpert:
java.awt.headless=true

Wobei ich nicht wüsste was ich damit machen sollte.


Zuerst einmal: Hat dein Programm auch eine grafische Ausgabe (1.) oder verwendet es einfach nur AWT Komponenten (2.)?

Für 2. ist genau der Sytemwert java.awt.headless=true gedacht.

Man kann diesen entweder bei den Sytem-Properties eintragen oder java mit

java -Djava.awt.headless=true ....

starten.

Ein Beispielanwendung von mir.
Bei meiner fortschrittlichen DB2Excel-Variante ermittle ich die optimale Spaltenbreite auch für Proportionalschriftarten. Um die Breite davon zu ermitteln, braucht es AWT-Komponenten - es wird aber nie eine Grafik ausgegeben.

Ein weiterer Einsatz dieser Variante sind Webserver, auf welchem z.B. kein X-Windows läuft.

/Robert

mk
26-06-07, 13:34
Hallo Robert, hallo Dieter,

bin heute hinter den Trick gekommen.
Ich erstelle eine separate propertiedatei mit dem Eintrag
java.awt.headless=true

Dann mit dem Befehl ADDENVVAR ENVVAR(QIBM_JAVA_PROPERTIES_FILE)
wird die Variable für den Job gesetzt.
Damit klappt es.

Allerdinings finktioniert es auf V5R3 so.

Ich würde da gleich Szenario aber auf einem V5R1 System benötigen. Lt Dokumentaion scheint das aber nicht zu
funktionieren.

Danke und Gruß
Michael

Fuerchau
26-06-07, 13:42
Scheint dass QIBM_JAVA_PROPERTIES_FILE auf V5R1 nicht definiert ist.

Mach es doch so wie oben vorgeschlagen und starte dein Java mit "-d.....".

RobertPic
26-06-07, 14:11
Alternativ kann man noch ein systemweites Propertiefile anlegen:

/QIBM/UserData/Java400/SystemDefault.properties

Tossenberger
23-10-07, 16:44
Noch eine Ergänzung:

java.awt.headless=true funktioniert nach meiner bisherigen Erfahrung nur wenn das PASE environment installiert ist! (AIX lässt grüssen)

Insbesondere bei Installationen mit älteren Release ist das öfters nicht der Fall.

Gruß
RT