windows - Hvordan kan Java udføre batchfil i separat proces træ

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg skriver min Java-app en opdateringsteknik.
Jeg opretter en Windows-batchfil, afslutter mit program, og batchfilen fortsætter med at slette min jar, kopier den nye fra en fjernplacering, start jar.
Mit problem: sletning + kopieringsarbejder, MEN - ansøgningen vandt ikke start.
Jeg tror, ​​problemet er, at jeg ikke ved, hvordan man laver Java til at udføre batch-filen i separat proces træ.
når du kører dette:
  Runtime.getRuntime ()
Jeg åbner en børneproces.


Så mit spørgsmål - Hvordan kan Java udføre batchfil i separat proces træ?

Bedste reference


Her er en løsning, der bruger cmd som det interminente lag: [5]


public class Main {
    public static void main(String[] args) throws Exception {
        Process p = Runtime.getRuntime().exec("cmd /c c:\test.bat");
    }
}


hvor test.bat vil indeholde


@echo off
PING 1.1.1.1 -n 1 -w 5000 >nul
java -jar "[path]"

Andre referencer 1


Jeg tror svaret ligger begravet i det link, som Jakub Zaverka gav. Brug start i stedet for cmd for at starte batchfilen. Dette vil give partiet sit eget konsolvindue.

Andre referencer 2


Jeg løste problemet.
Det var på grund af launch4j - programmet jeg warped min JAR med. Fordi det tillod en forekomst, gjorde det mig ikke muligt at starte den nye instans fra kommandolinjen, der startede under programmet forud for opgradering, selvom jeg slette filen for opgradering.
Nu forkæler jeg mit program uden den ene instans validering og det virker fint!
Mange tak for deres venlige hjælp!


BTW - Jeg validere en instans med denne løsning -
Hvordan tillader kun at køre en forekomst af et Java-program ad gangen?