neuen Prozess starten und anwendung beenden.

delphiking1980

Bekanntes Mitglied
Hallo,

ich möchte eine Updatefunktion für meine kleine Anwendung implementieren, nun habe ich das neue JAR File herruntergeladen (das ist das einfachste) nun muss ich aber irgendwie die Anwendungen austauschen, quasi das alte JAR File löschen und das neue platzieren, ich kann aber nicht aus der Anwendung herraus die aktive JAR Datei löschen (Den Ast absägen auf dem man sitzt.)

Meine Idee bisher :

Ich schreibe eine kleine Batchdatei welche als Prozess gestartet wird und erstmal 5sek. pause macht, in der Zeit beendet meine eigentliche Anwendung (die Anwendung braucht deutlich weniger als 5sek. zum beenden) und dann wird das alte JAR File gelöscht und das neue kopiert.

Auch könnte ich mir vorstellen das ich eine Start.jar habe welche der Benutzer startet und diese dann auf Updates prüft und danach die eigentliche JAR startet.

Aber das klingt alles etwas nach herrum gefrickel gibt es eine bessere Lösung ?
 

Gucky

Top Contributor
Ich halte Möglichkeit zwei für sinnvoller. Aber man kann ja auch nur einzelne .class Dateien ersetzen. Dann könntest du eine Uptdateklasse haben, die dann die erneuerten .class Dateien im .jar Archiv speichert.
 

delphiking1980

Bekanntes Mitglied
okay hört sich gut an, also muss ich das JAR als ZIP öffnen und die neuen Klassen einfügen ?
Dann muss ich mir ja alle geänderten Klassen merken oder ?
 

delphiking1980

Bekanntes Mitglied
Meine Lösung

Java:
package de.stefandraegersoftware.start;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;

public class Start {

	private static final String PROPERTIE_FILENAME = "./properties.prop";

	private static final String UPDATE_PROP = "updateBeforeStart";
	private static final String UPDATE_FILENAME_PROP = "updatefile";
	private static final String XMX_PROP = "xmx";
	private static final String XMS_PROP = "xms";
	private static final String STARTAPPL_PROP = "startappl";
	private static final String JAVA_PARAMETER = "java";
	private static final String JAR_PARAMETER = "-jar";

	private static Properties properties = null;

	public static void main(String... args) {
		loadPropertieFile();
		if (properties != null) {
			Boolean updateBeforeStart = Boolean.parseBoolean(properties.getProperty(UPDATE_PROP));
			String updateFilename = properties.getProperty(UPDATE_FILENAME_PROP);
			File updateFile = new File(updateFilename);
			if (updateBeforeStart && updateFile.exists()) {
				if (deleteOldApplication()) {
					moveAndRenameNewApplication();
				}
			}
			startApplication();
		}
	}

	private static boolean moveAndRenameNewApplication() {
		boolean result = false;
		String updateFilename = properties.getProperty(UPDATE_FILENAME_PROP);
		String startApplicationFilename = properties.getProperty(STARTAPPL_PROP);
		File file = new File(updateFilename);
		if (file.exists()) {
			result = file.renameTo(new File(startApplicationFilename));
		}
		return result;
	}

	private static boolean deleteOldApplication() {
		boolean result = false;
		String filename = properties.getProperty(STARTAPPL_PROP);
		File file = new File(filename);
		if (file.exists()) {
			result = file.delete();
		}
		return result;
	}

	private static void loadPropertieFile() {
		File file = new File(PROPERTIE_FILENAME);
		if (file.exists()) {
			FileInputStream fInStream = null;
			try {
				fInStream = new FileInputStream(file);
				properties = new Properties();
				properties.load(fInStream);
			} catch (IOException e) {
				e.printStackTrace();
			} finally {
				if (fInStream != null) {
					try {
						fInStream.close();
					} catch (IOException e) {
						e.printStackTrace();
					}
				}
			}
		}
	}

	private static void startApplication() {
		try {
			new ProcessBuilder(getStartParameterFromProperties()).start();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	private static String[] getStartParameterFromProperties() {
		String xmx = "-Xmx".concat(properties.getProperty(XMX_PROP));
		String xms = "-Xms".concat(properties.getProperty(XMS_PROP));
		String startApplication = properties.getProperty(STARTAPPL_PROP);

		String[] parameter = new String[] { JAVA_PARAMETER, JAR_PARAMETER, xmx, xms, startApplication };
		return parameter;
	}
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Thallius Neuen Prozess starten, der auch nach Beedingung des Starter-Prozesses weiterläuft? Allgemeine Java-Themen 5
C Koordinaten LONG/LAT eines neuen Punktes in bestimmter Entfernen und Winkel berechnen Allgemeine Java-Themen 3
T Neuen Kanal in Bild (TIFF) einfügen à la Photoshop Allgemeine Java-Themen 2
G Array mit neuen Objekten der selben Klasse füllen Allgemeine Java-Themen 2
R Neuen Thread mit Verzoegerung starten..? Allgemeine Java-Themen 4
D Erstmaliger Programmstart im neuen Jahr Allgemeine Java-Themen 7
H Problem mit erzeugen eienr neuen Session Allgemeine Java-Themen 3
R in einem neuen Runnable() eine lokale Varibale verwenden Allgemeine Java-Themen 2
zilti NetBeans 6.0: neuen File Type definieren Allgemeine Java-Themen 2
Nils_Langner InputStream soll sich bei neuen Daten melden Allgemeine Java-Themen 2
H Vektoren nehmen keine neuen Werte an Allgemeine Java-Themen 5
D Zusammensetzen von konstanten String Arrays zu einem Neuen Allgemeine Java-Themen 14
C Wie erstelle ich einen neuen Systemproperty? Allgemeine Java-Themen 9
T Wert an laufenden Java-Prozess übergeben Allgemeine Java-Themen 10
J Warten bis cmd Prozess fertig ist Allgemeine Java-Themen 2
L Prozess automatisch beenden Allgemeine Java-Themen 8
R PIPE Kommunikation mit Prozess blockiert Allgemeine Java-Themen 0
L Java Web Start - generierter Prozess Allgemeine Java-Themen 4
Tom299 Beliebiges Windows-Programm / Prozess in den Vordergrund bringen Allgemeine Java-Themen 4
A Linux: Native Library mit Rootrechten ohne Prozess mit sudo zu starten Allgemeine Java-Themen 1
K Problem: Java-Klasse mit mehreren Threads als eigenen Prozess starten Allgemeine Java-Themen 3
B Erkennen, wann Prozess beendet ist, dann Thread beenden. Allgemeine Java-Themen 6
D Grafisches Frontend zu einem Java Prozess erstellen Allgemeine Java-Themen 0
L Java Prozess 100% -> Analyse Allgemeine Java-Themen 2
P Scanner als Inputstream für Java Prozess Allgemeine Java-Themen 4
J Aktuellen Prozess herausfinden. Allgemeine Java-Themen 3
GUI-Programmer Prozess eine Bezeichnung geben Allgemeine Java-Themen 3
M Einen Prozess "crashen" lassen Allgemeine Java-Themen 9
I %AppData% Variable für einen Prozess setzen Allgemeine Java-Themen 23
E externen Prozess schließen, wenn Programm geschlossen wird Allgemeine Java-Themen 2
S Prozess der von anderem Prozess gestartet wurde beenden? (Windows Bildschirmtastatur) Allgemeine Java-Themen 4
Nicer Prozess über Prozessnamen beenden Allgemeine Java-Themen 15
K Prozess starten, überwachen und beenden Allgemeine Java-Themen 4
O Wie laufenden Prozess einfangen? Allgemeine Java-Themen 7
X Prozess-Objekt nach Ausführung der destroy-Methode null oder nicht null ? Allgemeine Java-Themen 10
D Shell-Prozess lässt Thread nicht enden Allgemeine Java-Themen 4
0din Prozess einer .jar umbenennen Allgemeine Java-Themen 7
data89 Java als Boot-Prozess/Daemon? Allgemeine Java-Themen 6
reibi Kill eines Java-Prozesses und Stop-Prozess Allgemeine Java-Themen 3
T In der JVM einen weiteren, unabhängigen Prozess starten Allgemeine Java-Themen 11
G Runtime.exec - Prozess "mittendrin" "einfach Allgemeine Java-Themen 4
Y ProcessBuilder, Prozess wird gestartet, aber Anwendung nicht Allgemeine Java-Themen 5
M String an externen Prozess senden/auslesen Allgemeine Java-Themen 25
T Prozess beenden Allgemeine Java-Themen 3
J Zweiter Prozess der alle x Sekunden etwas abfragen soll Allgemeine Java-Themen 2
G Prozess direkt starten beim Start des Appservers Allgemeine Java-Themen 3
G Prozess-Status Allgemeine Java-Themen 8
H Kommunikation mit einem c-Prozess funzt nicht richtig Allgemeine Java-Themen 5
L Zugriff auf anderen Prozess der VM Allgemeine Java-Themen 9
C nur einen Prozess eines Programmes erlauben Allgemeine Java-Themen 8
S was passiert bei diesem filereader prozess Allgemeine Java-Themen 2
A Java Prozess in neuer JVM Allgemeine Java-Themen 8
K Prozess-Visualisierung: Stichwörter gesucht Allgemeine Java-Themen 4
D runtime.exec --> Prozess hängt sich auf Allgemeine Java-Themen 7
S Prozess javaw.exe läuft immer noch, obwohl Programm beendet Allgemeine Java-Themen 6
M Thread als eigenständiger Linux Prozess mit PID Allgemeine Java-Themen 8
clemente Swing Applikation killt kwin Prozess (unter Linux / KDE) Allgemeine Java-Themen 3
M Zweiten Prozess in Java starten! Allgemeine Java-Themen 5
R Kontrolle über Externe Prozess Allgemeine Java-Themen 5
G Prozess beenden, wenn er hängt Allgemeine Java-Themen 9
S Wie eine Anwendung als neuer Prozess starten? Allgemeine Java-Themen 8
P wie beende ich einen prozess? Allgemeine Java-Themen 3
S blockierenden Prozess stoppen Allgemeine Java-Themen 13
S Java Programm lässt sich vom USB-Stick starten, aber nicht von HDD Allgemeine Java-Themen 16
E Java .exe Datei mit args starten Allgemeine Java-Themen 2
Lukas2904 Automatisches starten des Programms Allgemeine Java-Themen 5
N jar File auf Mac mit Doppelklick starten Allgemeine Java-Themen 5
O Jar lässt sich auf bestimmten Pc nicht starten Allgemeine Java-Themen 18
I Threads AudioInputStream separat starten und beenden; parallel programming Allgemeine Java-Themen 2
G Jar lässt sich mit macOS nicht starten Allgemeine Java-Themen 9
Tommy135 Input/Output Application aus Java package starten Allgemeine Java-Themen 2
H Erste Schritte Ausführbare Dateien lassen sich nicht starten Allgemeine Java-Themen 5
ralfb1105 Classpath putty.exe aus JAR starten Allgemeine Java-Themen 37
ralfb1105 Starten Java App(s) (.jar) aus einem Java Programm Allgemeine Java-Themen 18
temi Java Programm aus einer DB laden und starten Allgemeine Java-Themen 2
F .jar erstellen und starten Allgemeine Java-Themen 15
E Mit Java ein Python Programm starten Allgemeine Java-Themen 20
D Compiler-Fehler Ich kann meinen Kompilierer nicht starten. Allgemeine Java-Themen 16
R probleme beim starten von jar unter linux Allgemeine Java-Themen 2
L Eclipse JavaFX Klasse starten programmatisch Allgemeine Java-Themen 1
V Endlosschleife mit Startbutton starten und Stopbutton stoppen Allgemeine Java-Themen 6
V JavaFX Fehler beim Starten einer Jar Allgemeine Java-Themen 7
A Javaagent auf WebApplication starten Allgemeine Java-Themen 0
B JAVA - mehrere Clienten gleichzeitig starten. Nicht bei Code! Allgemeine Java-Themen 3
T Starten vom Thread Allgemeine Java-Themen 3
P Threads Threads nicht gleichzeitig starten Allgemeine Java-Themen 3
Maxim6394 Jar Dateien starten nicht Allgemeine Java-Themen 7
C Mit Pc Awendungen auf Server starten Allgemeine Java-Themen 8
M Eclipse Eine xhtml aus einem JSF Projekt starten Allgemeine Java-Themen 2
Developer_X Java Applets in Browser starten Allgemeine Java-Themen 9
N GOM-Database Program - wie starten Allgemeine Java-Themen 0
F Java Anwendung Remote starten geht nicht Allgemeine Java-Themen 0
F Spiel lässt sich nicht aus GUI starten Allgemeine Java-Themen 5
P Starten einer Java .jar-Datei Allgemeine Java-Themen 0
J jar Datei per Doppelklick starten Allgemeine Java-Themen 6
B Webbrowser mit Proxy- Verbindung starten Allgemeine Java-Themen 6
K Spiele starten nicht richtig Allgemeine Java-Themen 2
M Problem beim Starten der Anwendung Allgemeine Java-Themen 3
B Java GUI via SSH starten... Allgemeine Java-Themen 5
S VLC + Lied über Java starten Allgemeine Java-Themen 17

Ähnliche Java Themen

Neue Themen


Oben