Java-Programm soll sich selbst neu starten

Dieses Thema im Forum "Java/Mono/dotGNU" wurde erstellt von Ahnenforscher, 08.09.2008.

  1. #1 Ahnenforscher, 08.09.2008
    Zuletzt bearbeitet: 21.11.2010
    Ahnenforscher

    Ahnenforscher Jungspund

    Dabei seit:
    31.08.2007
    Beiträge:
    21
    Zustimmungen:
    0
    Hallo,

    ich habe ein Java-Programm geschrieben, das einige, vom Benutzer eingestellte Optionen, erst beim nächsten Programmstart übernehmen kann. Nun möchte ich in diesem Fall den Benutzer fragen, ob er das Programm neu starten möchte, und falls er bejaht, soll sich die Java-Applikation (ein .jar-Archiv) beenden und selbst neu aufrufen. Nun ist mir klar, dass ich das Programm nicht zuerst beenden und dann neu aufrufen kann, da der Interpreter gar nicht mehr soweit kommt (nach dem System.exit()-Befehl ist ja Schluss). Gibt es trotzdem eine Möglichkeit, das irgendwie zu implementieren, ohne auf ein weiteres Programm auszuweichen?
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. daboss

    daboss Keine Macht für niemand!

    Dabei seit:
    05.01.2007
    Beiträge:
    1.294
    Zustimmungen:
    0
    Ort:
    sydney.australia.world
    Auf die schnelle würd ich jetzt vorschlagen, das du am Ende erst das Programm neu startest (oder ein Script aufrufst, das das erledigt) und direkt danach das alte beendest?
     
  4. foexle

    foexle Kaiser

    Dabei seit:
    02.05.2007
    Beiträge:
    1.104
    Zustimmungen:
    0
    Ort:
    Saarbrücken
    daboss wird es da nicht zu einem ressourcen konflikt kommen ? ...
    also ich denke mal schon ... das mit dem skript würde ich auch so machen, allerdings würde ich dem skript noch mitgeben die PID und abfragen ob das programm beendet ist und dann erst neu starten
     
  5. #4 daboss, 08.09.2008
    Zuletzt bearbeitet: 08.09.2008
    daboss

    daboss Keine Macht für niemand!

    Dabei seit:
    05.01.2007
    Beiträge:
    1.294
    Zustimmungen:
    0
    Ort:
    sydney.australia.world
    Nicht umbedingt, oder? (Passieren kann es schon, klar, aber...)

    Man kann ja auch so das ("ein") Programm fünf mal starten. Kommt halt darauf an. Aber wie gesagt, war ja auch nur ne schnelle Idee...

    (Andere, bei google gefundene Ideen wären, zBsp., das Fenster disposen und noch mal die main() Aufrufen... aber davon halt ich noch viel weniger...)
     
  6. foexle

    foexle Kaiser

    Dabei seit:
    02.05.2007
    Beiträge:
    1.104
    Zustimmungen:
    0
    Ort:
    Saarbrücken
    aber so wie ich dich verstanden habe, geht es auch darum informationen zu speichern, was du eingestellt hast in dem programm ... was das sein mag lass mal dahin gestellt sein. Wenn du nun 3 mal das gleiche Programm offen hast, das auf die selbe Config datei zugreift, und du änderst in dem einen Prozess was ... hast du schon deinen Konflikt
     
  7. #6 frickelhase, 11.09.2008
    frickelhase

    frickelhase Mitglied

    Dabei seit:
    14.12.2006
    Beiträge:
    42
    Zustimmungen:
    0
    Gibst es einen Grund, die neu eingestellten Optionen nicht direkt zu übernehmen, ohne Neustart ? Übernehmen der Optionen erst nach dem nächsten Start ist so windows-like und imho unnötig, aber vielleicht gibt es ja doch einen triftigen Grund ...

    Gruß
     
  8. #7 Ahnenforscher, 11.09.2008
    Ahnenforscher

    Ahnenforscher Jungspund

    Dabei seit:
    31.08.2007
    Beiträge:
    21
    Zustimmungen:
    0
    Hallo zusammen,

    vielen Dank für eure Posts. Sorry, dass ich mich erst jetzt melde, aber ich hatte in letzter Zeit etwas Stress. Aber zurück zum Topic:

    Wenn schon, dann soll dieser Programm-Neustart ein "richtiger" Neustart sein: Also nicht so, dass nachher 2 oder mehr Instanzen des Programms laufen, auch aus dem Grund, dass das Programm auf EINE Konfigurationsdatei zugreift.

    @frickelhase:
    Durchaus hast du Recht und mir gefällt das mit dem Programmneustart auch nicht wirklich gut, aber die Situation ist folgende: Die ominösen "Einstellungen", die diesen Neustart brauchen, sind Spracheinstellungen. Das Programm ist eine Java-Applikation mit einer SWT-Benutzeroberfläche und die Sprachvariablen werden beim Programmstart aus der entsprechenden .properties-Datei geladen (für deutsch bspw. resources/languages/de.properties). Dieses Laden erfolgt aber nicht direkt, d. h. die Übersetzungen werden nicht in Variablen gespeichert, sondern es gibt eine Methode, die bei Aufruf einen Parameter mit der Sprachvariable erwartet, und die Übersetzung zurückliefert. So steht beispielsweise in der Programmierung für die Menü-Einträge: menuItem.setText(getLocalization("exit"));
    Dies funktioniert beim Programmstart wunderbar, wird jedoch die Sprache zur Laufzeit umgestellt, diese Option soll der User ja haben, gibt es das Problem, wie diese Elemente übersetzt werden sollen. Ich dachte da einen Programmneustart, aber vielleicht hat ja einer von euch noch eine bessere Idee...

    Viele Grüße
     
  9. cremi

    cremi Dude

    Dabei seit:
    15.02.2004
    Beiträge:
    329
    Zustimmungen:
    0
    Ort:
    AUT/Ktn
    vielleicht verstehe ich jetzt was falsch, aber warum erzeugst du nicht einfach ein neues objekt, von der Klasse in der sich deine main() befindet, mit den neuen, richtigen sprachparametern und löscht alle "alten" objekte?
     
  10. #9 frickelhase, 11.09.2008
    Zuletzt bearbeitet: 11.09.2008
    frickelhase

    frickelhase Mitglied

    Dabei seit:
    14.12.2006
    Beiträge:
    42
    Zustimmungen:
    0
    genau an sowas hab ich auch gedacht, deswegen meine erste Nachfrage: Die von cremi beschrieben Vorgehensweise ist eigentlich so üblich und praktiziert, wobei die "alten" Objekte imho nicht mal gelöscht werden müssen. Ich würde die Objekte neu erzeugen, im Konstruktur die neuen Sprachparameter setzen und gut ... Dies muss nicht mal in der main()-Methode durchgeführt werden.
     
  11. musiKk

    musiKk Dr. Strangelove

    Dabei seit:
    30.07.2006
    Beiträge:
    264
    Zustimmungen:
    0
    Ort:
    Leipzig
    Die main-Methode ist statisch. Wenn man vom dazugehörigen Objekt eine neue Instanz anlegt, bringt das nichts.
     
  12. cremi

    cremi Dude

    Dabei seit:
    15.02.2004
    Beiträge:
    329
    Zustimmungen:
    0
    Ort:
    AUT/Ktn
    Ich würd auch keine instanz zum zugehörigen objekt anlegen sondern ein neues objekt
     
  13. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  14. musiKk

    musiKk Dr. Strangelove

    Dabei seit:
    30.07.2006
    Beiträge:
    264
    Zustimmungen:
    0
    Ort:
    Leipzig
    Man legt zur Laufzeit keine Objekte an, sondern nur Instanzen derer. Die Terminologie ist etwas durcheinander. Dennoch muss ich meinen obigen Einwand evtl. zurückziehen. Kann sein, dass ichs auf die Schnelle anders verstanden habe, als es gemeint war.
     
  15. #13 blue-dev, 12.09.2008
    blue-dev

    blue-dev stranger with blue eyes

    Dabei seit:
    30.06.2007
    Beiträge:
    438
    Zustimmungen:
    0
    Also direkt aus der statischen Java Main Funktion sein Programm zu schreiben halte ich generell für eine der schlimmsten Sachen die man tun kann, und ich hoffe du hast das nicht getan :p.

    Eben dann kann man solche restarts fast ganz vergessen. Ich würde das ganze über's threading lösen, einfach eine Instanz des Objekts aufmachen und alle paar Sekunden auf verfügbarkeit testen (Java hat glaube ich noch kein onexit für swt forms), sollte das Objekt nicht mehr vorhanden sein: reinitialisieren und dabei die Sprachdatei neu laden.

    Das ganze könntest du natürlich auch mit zwei Objekten lösen die sich untereinander kennen und bei Absurz gegenseitig neu initialisieren. Das Muster hab ich mal bei einem Internetcafe' verwendet, sobald der Nutzer es schafft eine Instanz zu killen, lädt er einfach eine neue aus der noch laufenden im Hintergrund.

    Sollte nix davon dich ansprechen: Ich hab noch nie mit Forms unter Java gearbeitet, aber ich bin mir sicher das es da ne reload Funktion gibt.
     
Thema: Java-Programm soll sich selbst neu starten
Besucher kamen mit folgenden Suchen
  1. java programm neu starten

    ,
  2. java programm neu starten befehl

    ,
  3. java programm nach ende erneut starten

    ,
  4. java programm neustarten,
  5. java main beenden und neu starten,
  6. java befehl programm automatich neu ausführen,
  7. java editor programm neu starten befehl,
  8. java methode erneut starten,
  9. java befehl neustarten
Die Seite wird geladen...

Java-Programm soll sich selbst neu starten - Ähnliche Themen

  1. Java-Programmier-Problem

    Java-Programmier-Problem: Hallo Leute, ich programmiere gerade das erste mal an einem etwas komplexeren Problem in Java, allerdings scheiter ich schon an der ersten...
  2. Ubuntu 16.10 soll »Yakkety Yak« heißen

    Ubuntu 16.10 soll »Yakkety Yak« heißen: Ubuntu-Gründer Mark Shuttleworth hat sich für »Yakkety Yak« als Name für die nächste Ubuntu-Version entschieden. Weiterlesen...
  3. Ubuntu soll nativ unter Windows 10 laufen

    Ubuntu soll nativ unter Windows 10 laufen: In einer Keynote bei Microsofts derzeit stattfindender Entwicklerkonferenz Build werden am 31. März Einzelheiten zur einer nativen Integration von...
  4. Ur-Unix soll reanimiert werden

    Ur-Unix soll reanimiert werden: Der Australier Warren Toomey plant die erste Version von Unix wieder zum Laufen zu bringen. Dazu möchte er den in Ausdrucken vorhandenen...
  5. Jolla: Tablet-Finanzierer sollen entschädigt werden

    Jolla: Tablet-Finanzierer sollen entschädigt werden: Der ins Trudeln geratene finnische Smartphonehersteller Jolla will ab Februar 540 weitere Jolla-Tablets ausliefern. Die restlichen Unterstützer...