PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Java exec Problem



D H
05-12-2001, 21:00
Ich bin noch ein ziemlicher Newbie in Java und hab ein Problem mit einem kleinen Programm, das als Server zum
ein- und abwählen der Internetverbindung genutzt werden soll. Der Fehler tritt auf, wenn der
Befehl ( java.lang.Runtime.getRuntime().exec(filename) ) ausgeführt wird:


current locale is not supported in X11, locale is set to CX locale modifiers are not supported, using default
java.lang.InternalError:
Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable.
at sun.awt.motif.MToolkit.<init>(MToolkit.java:43)
at java.awt.Toolkit.getDefaultToolkit(Toolkit.java:39 9)
at tcpServer.execute(tcpServer.java:75)
at tcpServer.analyse(tcpServer.java:65)
at tcpServer.main(tcpServer.java:34)


Auf dem Rechner läuft kein X. Der Befehl wird zwar korrekt ausgeführt, danach funktioniert aber das Programm nicht mehr
(Die Internetverbindung kann nicht mehr beendet werden)

Gruß,
dh

christophwth
05-12-2001, 23:03
Hi

so wie es aussieht versucht dein programm aber eine graphische ausgabe

siehe: at sun.awt.motif.MToolkit.<init>(MToolkit.java:43)

um zu überprüfen ob es geht wenn du die möglichkeit zur x-ausgabe gibst
muss die DISPLAY variable gesetzt sein

dafür muss ausserdem auf dem zielrechner X von diesem client erlaubt sein
(xhost u.a.)

wenn du den quellcode hast :
dann hilft vielleicht eine veränderung weg von den grafik klassen .
oder ein fangen der exception
mit fehlerbehandlung.

gruss
christoph

D H
09-12-2001, 13:32
also wenn ich das Programm auf einem rechner mit X ausführe, funktionierts.
Den Quellcode hab ich naturlich (habs ja selber geschrieben) aber was meinst du mit



dann hilft vielleicht eine veränderung weg von den grafik klassen .


Eigentlich hab ich da keine Grafik-Klassen benutzt. Ich hab eigentlich nur
import java.net.*;
import java.io.*;

und mit try, catch abfangen funktioniert irgendwie auch net...

anda_skoa
09-12-2001, 15:29
Hmm, eigenartig.

Die JVM versucht das Default Toolkit zu laden.

Wo passiert das genau?
Wenn du getRuntim() und exec voneinander trennst, in welchem der beiden Aufrufe passierts dann?

Also:
Runtime runtime = Runtime.getRuntime();
runtime.exec(befehl);

Ciao,
_

Doc Maverick
09-12-2001, 17:57
Hi,
würdest Du Deinen Sourcecode mal zum Download, offenlegen, dann schau ich mir mal an woran es liegt, denn ich habe schon einige Erfahrungen mit JAVA gesammelt.
Tschüß.

D H
10-12-2001, 15:39
is ja open source :)

aber noch lang nicht fertig (sieht an manchen Stellen noch ziehmlich baustellig aus...)

Doc Maverick
10-12-2001, 19:45
Hi,
ich habe gefunden, wieso Dein Prog einen X-Server benötigt, und zwar hast du in der Methode execute(...) folgende Funktion aufgerufen:
java.awt.Toolkit.getDefaultToolkit().beep();

Du hast zwar das awt-package nicht importiert, aber eine Methode daraus importiert. :(

Mir fällt leider keine andere Möglichkeit ein, um vom PC einen Piepston zu bekommen. Vielleicht kannst Du ja auf den Ton verzichten?
Ansonsten könnte alles so klappen.
Tschüß.

jgbauman
11-12-2001, 11:23
Folgendes biepst auf normalen Terminals:
System.out.print("\007");

D H
12-12-2001, 15:23
Danke, daran hab ich irgendwie nicht gedacht!
:) :) :)