Swing GUI vs Konsole

Neumi5694

Top Contributor
Ich steg gerade vor der Aufgabe, dass eine Anwendung sowohl GUI-Anwendung (also ohne Konsole) als auch Konsolenanwendung sein kann.

Sprich: Je nach Startparameter wird dann eine konsolenlose Version oder eben eine Version mit Konsole mit Infotexten gestartet.

Die einzige Möglichkeit, die mir hierzu einfällt, ist ein eigener Launcher, also eine Klasse mit der "default"-Main Methode, welche die Startparameter auswertet, danach einen neuen Prozess startet, einmal mit "javaw.exe" und einmal mit "java.exe"
Wäre das sinnvoll oder gibt es mit "javaw.exe" eine Möglichkeit, in die aktuelle Konsole auszugeben? ICh für meinen Teil hätte die Infotexte ja einfach in ein Meldungsfenster gepackt.
 
Je nach Startparameter wird dann eine konsolenlose Version oder eben eine Version mit Konsole mit Infotexten gestartet.

Hier meinst du bestimmt bei einem der beiden GUI Version oder?

Was mir dazu spontan einfällt, ist die Command-Line Argumente zu nutzen.

Wenn du dein Programm über ein CMD ausführst kannst du ja sowas schreiben:

Code:
java <NAME> <param1> <param2> <..>

Du könntest also auch:
Code:
java application gui

oder

java application console

In deinem Quellcode kannst du dir die Startparameter ja holen und dann je nach Param entweder die GUI starten oder es über Console machen.

Bsp:
Java:
publc static void main(String[] args)
{
    if(args.length > 0)
    {
        if(args[0].equals("gui")
        {
               // launch gui
       }
       else if(args[0].equals("console")
       {
              // start programm logic without gui
       } 
       else
       {
            // falscher Parameter
       }
    }
}

Habe das selbst noch nie gemacht - von der Logik her sollte es aber gehen

Gruß
Robert
 
Das Problem ist, dass java.exe und javaw.exe sich anders verhalten.
java.exe: Blockiert die aktive Konsole, gibt in die aktuelle Konsole aus, ohne aktive Konsole wird eine neue geöffnet
javaw.exe: Blockiert die aktive Konsole NICHT, gibt aber auch keine Texte aus.

Ziel wäre, dass abhängig vom Parameter entweder die GUI ohne Konsole gestartet wird oder eben bei entsprechemdem Parameter ein paar TExte auszugeben und dann das Programm zu beenden.

Dein Ansatz ist der Launcher, über den ich geredet hab. In einem Fall würde dann ein Prozess mit javaw.exe gestartet, im anderen Fall ein Prozess mit java.exe

Das Problem, das ich DABEI sehe, ist allerdings, dass - falls der Launcher mit javaw gestartet wurde - die aktive Konsole nicht verwendet wird, sondern eine neue geöffnet würde.


Ich suche noch nach einer Möglichkeit, von javaw.exe aus direkt in die Konsole zu schreiben, das wäre sehr viel angenehmer. Ob sie blockiert wird oder nicht, ist dabei nicht so wichtig.
In eine Datei schreiben ist kein Problem, das mache ich schon seit geraumer Zeit. In die aufrufende Konsole dagegen ...
 
Ach so, dann hatte ich deinen Ausgangspost falsch verstanden.
Ich dachte, dass du die GUI Version bzw die Konsolenversion noch schreiben musst.

Das die bereits existieren hab ich übersehen.

Ich meine, dass das mit dem Launcher die Sinnvollste Methode wäre.

Das Problem, das ich DABEI sehe, ist allerdings, dass - falls der Launcher mit javaw gestartet wurde - die aktive Konsole nicht verwendet wird, sondern eine neue geöffnet würde.

Ich hatte mal gelesen, dass es dafür zwar Lösungen gibt - aber keine platformübergreifende.

Kann dir gerade aber nicht sagen was es war.
Ich meine, dass du dem Processbuilder ein /k o.ä. mitgeben musst.
 

Neue Themen


Zurück
Oben