Hagen: JAVA Vm nicht beenden aber Programm schließen

hallo selfhtmler,

ich habe eine java software in die ein javaplugin eingebunden wird. Die pluginanwendung hat einen beenden button, dieser führt system.exit aus, das stoppt ja auch die jvm. Gibt es einen weg nur die Anwendung zu beenden ohne die jvm zu stoppen?

VG Hagen

  1. Hallo,

    [...] java software [...] javaplugin [...] pluginanwendung [...] Anwendung [...]

    Mit welchem dieser 4 Begriffe meinst du denn jetzt welchen Teil?

    Sind 'java software' und 'Anwendung' sowie 'javaplugin' und 'pluginanwendung'
    dasselbe? Oder wie oder was was?

    Gruß
    Slyh

    1. Sorry for that.

      Sagen wir ich binde in eine Anwendung wie eclipse eine .jar(mein plugin) ein, in dieser Anwendung(der Eclipse ähnlichen:-)), starte ich nun das plugin welches eine eigene grafische oberfläche mit dem besagten beenden button hat. Wie beende ich jetzt das plugin ohne die jvm zu beenden?

      VG Hagen

      1. Hallo,

        Sagen wir ich binde in eine Anwendung wie eclipse eine .jar(mein plugin) ein, in dieser Anwendung(der Eclipse ähnlichen:-)), starte ich nun das plugin welches eine eigene grafische oberfläche mit dem besagten beenden button hat. Wie beende ich jetzt das plugin ohne die jvm zu beenden?

        Vermutlich indem du das Fenster schließt und der Anwendung (aka Eclipse) sagst,
        dass es das Plugin für dich beenden bzw. entfernen soll. Üblicherweise gibt es
        hierfür eine API. Diese ruft meistens noch irgendwelche Methoden der Plugin-
        Schnittstelle (z.B. dispose()) auf und gibt dann alle Referenzen auf das
        Plugin frei. Dies führt dazu, dass die Plugin-Objekte irgendwann vom Gargabe
        Collector entfernt werden.

        Sollte das Plugin einen eigenen Thread aufmachen, mußt du diesen natürlich vorher
        auch noch beenden.

        Meintest du das? Wenn nicht, dann solltest du deine Frage genauer ausführen. Ist
        das eine Anwendung, die du geschrieben hast und du möchtest wissen, wie du den
        Plugin-Mechanismus implementieren sollst? Oder bindest du nur ein eigenes
        Plugin in eine bestehende Anwendung ein? Dann hilft dir sicher die dazu
        erhältliche Doku weiter, sofern vorhanden. :)

        Gruß
        Slyh

        1. Vielen Dank,
          für deine Antwort du hast mir schon geholfen.

          VG Hagen

  2. Hallo Hagen,

    dieser führt system.exit aus

    Man sollte eine Anwendung möglichst nicht durch System.exit beenden, sondern einfach alle Threads terminieren lassen, die man nicht mehr braucht (bzw auch nur die Fenster schließen, wenn "Anwendung beenden" für Dich bedeutet, dass man keine GUI mehr sieht).
    Dann kann Dein Plugin in einem eigenen Thread problemlos noch weiter arbeiten.

    Es gibt auch die Möglichkeit, mit Runtime.addShutdownHook() Threads beim Beenden der VM auszuführen. Das ist aber eher für Aufräumarbeiten gedacht und nicht um dort Teile des regulären Programmablaufs auszuführen.

    Grüße

    Daniel