[Java] runtime.exec() stopt na een tijdje

Pagina: 1
Acties:

  • polu
  • Registratie: December 2002
  • Laatst online: 01-12 17:48
Ik vond op internet een handige tutorial om een xvid/divx om te zetten naar een DVD, voor Linux. Erg handig allemaal, maar alles was commandline. Dus besloot ik in Java een frontend ervoor te schrijven.
Met een simpel formuliertje kunnen alle parameters ingesteld worden, waarna deze in een "commando" gepropt worden, en door "exec()" wordt uitgevoerd.

code:
1
2
3
4
5
6
7
8
9
public void execute(){
        String command = "/usr/bin/transcode -i " + this.i + " -y " + this.y + " --export_prof " + this.export_prof + " --export_asr " + this.export_asr + " -o " + this.output_dir + "/" + this.o + " -D" + this.D + " -b " + this.b + " -N " + this.N + " -m " + this.output_dir + "/" + this.m + " -J " + this.J + " --export_fps " + this.export_fps;
        try {
            System.out.println(command);
            Runtime.getRuntime().exec(command);
        } catch (IOException e) {
            System.out.println("Er ging iets mis! :O");
        }
    }


Dit gaat in principe prima. Maar na 1minuut stopt het commando. Transcode begint netjes video te encoderen maar na 1 minuut stopt het gewoon. Terwijl als ik het gewoon uitvoer vanaf de commandline, dan gaat het prima. (en heb ik na ongeveer 10min een bruikbaar videobestand)

Ik had al geprobeerd om "waitFor()" te gebruiken. Gevolg is dat het commando wederom stopt, alleen dan crasht de JRE er ook gratis bij. Ik krijg overigens ook nooit die "Er ging iets mis!" te zien.

Iemand een idee? :| Ik code overigens met Eclipse 3.2 in Linux voor JDK 1.5.

jboelen.nl


Verwijderd

Print de exception zelf 's uit i.p.v. "Er ging iets mis!" ?
Sorry, niet goed gelezen...

[ Voor 23% gewijzigd door Verwijderd op 13-02-2007 21:10 ]


  • polu
  • Registratie: December 2002
  • Laatst online: 01-12 17:48
what the...

Ik heb eerst de exceptions laten weergeven, maar dit gaf helemaal niks. 0,0 regels tekst.

Nu heb ik een stukje code toegevoegd die de uitvoer van het commando toont, en nu blijf ie wel gewoon "leven". :?

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
BufferedReader stdInput = new BufferedReader(new 
            InputStreamReader(p.getInputStream()));
            BufferedReader stdError = new BufferedReader(new 
            InputStreamReader(p.getErrorStream()));
            // read the output from the command
            System.out.println("Here is the standard output of the command:\n");
            while ((s = stdInput.readLine()) != null) {
            System.out.println(s);
            }
            // read any errors from the attempted command
            System.out.println("Here is the standard error of the command (if any):\n");
            while ((s = stdError.readLine()) != null) {
            System.out.println(s);
            }


Gekopieerd van een tutorial van internet. Nou ja... het werkt, en ik heb nu leuke debug. :P

jboelen.nl