Exe mit Parametern starten

also zuerst:

/ im windows-pfad unter java benutzen ist gar kein problem.

der Vorteil dabei:
- keine blöden doppelten \ (also \\)
- auch unter nicht Windows-Systemen nutzbar

zum anderen:
- pack dein exec("winrar") in einen Thread
- wenn dein exec im EDT(event-dispatch-thread) läuft, wird alles blockiert bis er fertig ist....
 
hier nochmal nen kleines Beispiel:

Java:
Thread t = new Thread(new Runnable() {

            @Override
            public void run() 
            {
               String pfad=new File(".").getAbsolutePath();
               Runtime rt = Runtime.getRuntime();

               String[] command = {pfad+"/data/"+"wrar380d.exe","/s"};
               try 
               {
                    Process install = rt.exec(command);
                    install.waitFor();
                    System.out.println("Process exit code is:" + install.exitValue());
                    log.append("WinRAR fertig installiert! \r\n");
               }
               catch(IOException e) 
               {
                   System.err.println("IOException starting process!");
                   e.printStackTrace(printWriter);
                   System.out.println(stringWriter.toString());
               }
               catch(InterruptedException e) 
               {
                   System.err.println("Interrupted waiting for process!");
               }
        });
        t.start();

dann musste halt noch was einbauen um bescheid zu bekommen wann der thread durch ist...
 
hab mir nochmal den code angesehen...

also nochmal zum Verständnis:

im Prinzip muss *NUR*

Java:
rt.exec(command);

in einen Thread.
Alles andere kann (sollte!?) außerhalb passieren.

Nochwas:

je nachdem WIE deine Anwendung gestartet wurde, kann:
Java:
new File(".").getAbsolutePath();
auch mal einen anderen Pfad (als den von dir vermuteten) ausgeben!

In meinen Servlets wird folgendes ausgegeben:
c:\apache\tomcat\bin
(also daran denken)
 
also so wie du das hier beschrieben hast mit dem thread funktioniert leider überhaupt nicht. ich bekomm lauter fehler, also vom IDE. Hab auch versucht des nur um des
Java:
rt.exec(command);

zu machen, geht aber aucht nicht.

Gruß Seji
 
Dann liegt dein Fehler bei dir =)
Machst bestimmt einen Pfadfehler, denn bei mir funktioniert es auf diese weiße Programme aufzurufen mit Parameter =)


//Edit Hab es sogar eben mit einem SelfE. Archive geteset funktioniert. Er entpackt es automatisch. Wie gesagt Pfad fehler bei dir !
mfg

=)
 
Zuletzt bearbeitet:
also so wie du das hier beschrieben hast mit dem thread funktioniert leider überhaupt nicht. ich bekomm lauter fehler, also vom IDE.
naja....mir ging es ja auch nur ums Prinzip. Ob der Code nun exakt so funktioniert wie ich ihn postete.....keine Ahnung....

Wie dem auch sei....
Nutzt du Vista?
Vista hat ja diese eingebaute UAC.
Damit kannst du nicht mehr einfach so Prozesse starten....
 

Neue Beiträge

Zurück