PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Std Output umleiten/lesen



TGT
20-07-2006, 19:21
Hi,

ist es möglich den Standard Output umzuleiten oder auszulesen!?
Das Problem ist wie folgt: Ich würde gerne Funktionen eines Jar-Files nutzen, welches allerdings dessen Status auf System.out ausgibt. Nun würde ich jedoch gerne diese Status-Msgs in meinem Programm weiterverwenden!


Vielen Dank und liebe Grüße,
Tom

bischi
20-07-2006, 19:44
Was ist genau das Problem?

Möchtest du das Programm im Jar aus deinem Programm raus starten und die Ausgaben abfangen?

In diesem Fall wohl am einfachsten etwa so:

Runtime.exec("mein jar programm > output.txt") und danach diese Textdatei auslesen.

Wenn du natürlich den Source-Code hättest...

MfG Bischi

TGT
20-07-2006, 20:03
Möchtest du das Programm im Jar aus deinem Programm raus starten und die Ausgaben abfangen?
Genau -- naja -- zumindest die Funktionen des Jar-File verwenden.
Wobei mir ein derartiges "Ausführen" (mittels Runtime.exec(..)) nicht so richtig zusagt! :/


Wenn du natürlich den Source-Code hättest...
...dann?

bischi
20-07-2006, 20:10
Genau -- naja -- zumindest die Funktionen des Jar-File verwenden.
Wobei mir ein derartiges "Ausführen" (mittels Runtime.exec(..)) nicht so richtig zusagt! :/

Yepp - seh ich auch so.

Wenn du den Quellcode hast, kannst du natürlich was mit Messages machen oder den Code abändern...

MfG Bischi

TGT
21-07-2006, 06:35
Wenn du den Quellcode hast, kannst du natürlich was mit Messages machen oder den Code abändern...
Hmm -- steht eigentlich auch nicht zur Debatte :rolleyes:
Ich hab' jedoch gerade was anderes gefunden: (komisch das mir das vorher nicht aufgefallen ist)


System.setErr(...)
System.setOut(...)
Jetzt habe ich aber noch ein anderes Problem, dass wohl nicht so leicht zu umgehen ist!?

Es wird

System.exit(...);
verwendet! Klar -- mit dem direkten Ausführen des Jar-Files wäre das kein Porblem, aber über die Eleganz dieses Ansatzes sind wir uns wohl einig. :(


Wär' also toll wenn jemand einen Geistesblitz hätte :)


Tom

peschmae
21-07-2006, 13:21
Hmm -- steht eigentlich auch nicht zur Debatte :rolleyes:

Inwiefern nicht? Gar nicht oder fast nicht oder überhaupt. Ist überhaupt nicht klar wieviel Spielraum du da hast. Gar keinen? Oder kannst du das Programm ändern (lassen), aber es muss weiterhin standalone seine Funktion genau gleich erfüllen?

MfG Peschmä

bischi
21-07-2006, 15:32
verwendet! Klar -- mit dem direkten Ausführen des Jar-Files wäre das kein Porblem, aber über die Eleganz dieses Ansatzes sind wir uns wohl einig. :(


Wär' also toll wenn jemand einen Geistesblitz hätte :)

Meine Glaskugel ist leider schon wieder in Reparatur: Vielleicht erklärst du nochmals ganz genau, um was es geht...

MfG Bischi

peschmae
21-07-2006, 16:09
Meine Glaskugel ist leider schon wieder in Reparatur: Vielleicht erklärst du nochmals ganz genau, um was es geht...


Du hast auch eine? Meine sagt immer sie sei die einzige. Dann ist sie wohl auch kaputt :eek:

Schick sie gleich auch in Reparatur... ;)

MfG Peschmä

bischi
21-07-2006, 20:55
Übrigens: Der erste mit einer Glaskugel hier im Board war der hier: http://www.mrunix.de/forums/showthread.php?t=10688&highlight=Glaskugel

Das ist sogar noch vor meiner Zeit hier...

MfG Bischi

peschmae
21-07-2006, 22:36
Nee, der hatte sie nicht. Er wusste nur von ihrer mythischen Existenz.

MfG Peschmä

bischi
22-07-2006, 07:58
"Der" bezog sich auf "der erste Thread" :D

MfG Bischi

TGT
28-07-2006, 06:40
Guten Morgen ihr Hellseher :D
(Ich war die letzte Woche etwas von der "Außenwelt" abgeschnitten! -- Darum die lange Pause)


Inwiefern nicht? Gar nicht oder fast nicht oder überhaupt. Ist überhaupt nicht klar wieviel Spielraum du da hast. Gar keinen?Ne - so garkeinen! Das Jar-File muss so bleiben wie es ist (mitsamt den exits)


Vielleicht erklärst du nochmals ganz genau, um was es geht...
Ich möchte eine Funktion einer Klasse, auf welche ich keinen Einfluss habe -- ich also hinnehmen muss wie sie ist, aufrufen und die darin verwendeten System exits abfangen, damit mein Proggi nicht auch beendet.


execute {
ImmutableClass.fct();
} catch(System Exit) {
// System Exit occured
}

LG, Tom

peschmae
28-07-2006, 11:22
Ich glaube nicht dass du, wenn einmal system.exit() aufgerufen wurde, verhindern aknnst dass die JVM sich beendet.
Es gibt da ja schon so shutdownHandlers - aber die haben diese Möglichkeit halt einfach nicht.

Eventuell gibts aber eine einfachere Methode, eine zweite JVM zu kriegen, ohne das Runtime.getRuntime().exec().

MfG Peschmä

TGT
02-08-2006, 15:21
SecurityManager#checkExit(int)

peschmae
02-08-2006, 19:28
Ja, darüber bin ich auch gestolpert. Aber ich dachte eigentlich bei Standalone Java Apps hat der SecurityManager gar nix zu machen. Liege ich da falsch?
(Durchaus möglich - hab mich damit nie befasst da man das Ding ja doch eh nur bei Applets braucht)

MfG Peschmä

TGT
03-08-2006, 16:45
Aber ich dachte eigentlich bei Standalone Java Apps hat der SecurityManager gar nix zu machen. Liege ich da falsch?
Naja - ja :rolleyes:
Allgemein aus der Doku:

The security manager is a class that allows applications to implement a security policy. It allows an application to determine, before performing a possibly unsafe or sensitive operation, what the operation is and whether it is being attempted in a security context that allows the operation to be performed. The application can allow or disallow the operation.
Man kann eben alles beschränken, was für einen selbst vermeintlich Sinn macht :D
Ich hab zumindest einen Anwendungsfall gefunden *fg*

Grüße, Tom

peschmae
03-08-2006, 20:52
Man kann eben alles beschränken, was für einen selbst vermeintlich Sinn macht :D
Ich hab zumindest einen Anwendungsfall gefunden *fg*


Hmm, ok, scheint zu passen :D

MfG Peschmä