Restart-Funktion für einen Updatemechanismus

bobymiller

Grünschnabel
Hallo !

Ich versuche gerade einen Updatemechanismus für meine Applikation zu basteln. Da die Updates teilweise so tief in meine Anwendung eingreifen, muss die Applikation komplett beendet werden und danach wieder neu gestartet werden.

Wie kann ich in Java einen „Restart“ für meine Applikation schreiben, welche das Programm mit der VM beendet und sich anschließend wieder selber startet?

Die VM zu beenden ist hier nicht das Problem, sondern eher das selbständige starten der Anwendung selbst.

Funktioniert das überhaupt mit Java oder muss ich hierfür auf JNI zugreifen?
Oder gibt es vielleicht einen weg die VM nicht beenden zu müssen?

Danke im Voraus.:p

Gruß,
Boby
 
Hallo,

schau mal hier:
Java:
package de.tutorials;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.lang.management.ManagementFactory;

import javax.swing.JButton;
import javax.swing.JFrame;

public class RestartExample extends JFrame {

    public RestartExample() {
        super("RestartExample " + ManagementFactory.getRuntimeMXBean().getName());
        setDefaultCloseOperation(EXIT_ON_CLOSE);

        JButton btnRestart = new JButton("restart");
        btnRestart.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                ProcessBuilder processBuilder = new ProcessBuilder("java", "-cp", "bin", "de.tutorials.RestartExample", "bubu");

                try {
                    processBuilder.start();
                } catch (IOException ex) {
                    ex.printStackTrace();
                }

                System.exit(0);

            }
        });

        add(btnRestart);
        setSize(400, 100);
        setLocationRelativeTo(null);
        setVisible(true);
    }

    public static void main(String[] args) throws Exception {
        new RestartExample();
    }

}

Gruß Tom
 
Hallo Tom !

Besten dank, genau das was ich brauch. Deine Beiträge sind immer wieder eine Würze.

best regards
boby :D

Hallo,

schau mal hier:
Java:
package de.tutorials;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.lang.management.ManagementFactory;

import javax.swing.JButton;
import javax.swing.JFrame;

public class RestartExample extends JFrame {

    public RestartExample() {
        super("RestartExample " + ManagementFactory.getRuntimeMXBean().getName());
        setDefaultCloseOperation(EXIT_ON_CLOSE);

        JButton btnRestart = new JButton("restart");
        btnRestart.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                ProcessBuilder processBuilder = new ProcessBuilder("java", "-cp", "bin", "de.tutorials.RestartExample", "bubu");

                try {
                    processBuilder.start();
                } catch (IOException ex) {
                    ex.printStackTrace();
                }

                System.exit(0);

            }
        });

        add(btnRestart);
        setSize(400, 100);
        setLocationRelativeTo(null);
        setVisible(true);
    }

    public static void main(String[] args) throws Exception {
        new RestartExample();
    }

}

Gruß Tom
 
Zurück