Java-Programm soll sich selbst neu starten

Diskutiere Java-Programm soll sich selbst neu starten im Java/Mono/dotGNU Forum im Bereich Programmieren unter Linux/Unix; Hallo, ich habe ein Java-Programm geschrieben, das einige, vom Benutzer eingestellte Optionen, erst beim nächsten Programmstart übernehmen kann....

  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

    Anzeige

    Wenn du mehr über Linux erfahren möchtest, dann solltest du dir mal folgende Shellkommandos anschauen.


    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. daboss

    daboss Kaiser

    Dabei seit:
    05.01.2007
    Beiträge:
    1.297
    Zustimmungen:
    0
    Ort:
    bavaria.germany.europe.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 Kaiser

    Dabei seit:
    05.01.2007
    Beiträge:
    1.297
    Zustimmungen:
    0
    Ort:
    bavaria.germany.europe.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. 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.
     
  14. #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 neustarten

    ,
  3. java programm neu starten befehl

    ,
  4. java neu starten,
  5. java programm von vorne beginnen lassen,
  6. java methode erneut starten,
  7. java programm neustart,
  8. java programm soll sich selber neu starten,
  9. java programm erneut ausführen,
  10. java applikation neustarten,
  11. java neustart,
  12. programmnach ende neu straten java,
  13. java programm nach ablauf neu starten,
  14. java komplettes programm neustarten,
  15. methode neustarten java,
  16. java programm neustarten lassen programmieren,
  17. java kommand um ein programm komplett neu zu starten,
  18. java ein programm am ende erneut ausführen,
  19. skript von vorne starten java,
  20. java abfrage von vorn beginnen befehl,
  21. in java programmieren das das programm wieder am start beginnen soll,
  22. java code neustarten if,
  23. java programm neustarten code,
  24. java programm neu starten lassen,
  25. java programmieren software soll automatisch laufen
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. TrueNAS soll nach Debian 11 portiert werden

    TrueNAS soll nach Debian 11 portiert werden: Die Firma iXsystems plant die Portierung ihrer zusammengeführten BSD-Distribution TrueNAS auf verschiedene andere Plattformen. Zunächst ist dabei...
  3. Lightmeter soll E-Mail-Kommunikation verbessern

    Lightmeter soll E-Mail-Kommunikation verbessern: Das freie Programm Lightmeter soll die Auslieferung von E-Mails überwachen und visualisieren. Es wurde jetzt von der gleichnamigen Berliner Firma...
  4. Thunderbird 78 soll Änderungen am Add-on-System abschließen

    Thunderbird 78 soll Änderungen am Add-on-System abschließen: Wie schon Firefox zuvor erhält der E-Mail-Client Thunderbird mit MailExtensions ein überarbeitetes System für Erweiterungen, das sich am...
  5. Jakarta EE 9 soll Mitte des Jahres kommen

    Jakarta EE 9 soll Mitte des Jahres kommen: Der Direktor der Eclipse Foundation, Mike Milinkovich, hat die Pläne des Jakarta EE-Teams für 2020 bekannt gegeben. Der Nachfolger von Java EE...
  1. Diese Seite verwendet Cookies um Inhalte zu personalisieren. Außerdem werden auch Cookies von Diensten Dritter gesetzt. Mit dem weiteren Aufenthalt akzeptierst du diesen Einsatz von Cookies.
    Information ausblenden