Avatar billede ng-km Nybegynder
29. december 2005 - 12:44 Der er 5 kommentarer og
1 løsning

Problemer m. Runtime.exec

Jeg har problemer med at afviklet et program (Orbiprot.exe) på samme måde som jeg normalt afvikler et eksternt program i Java.

Jeg bruger følgende kode:

Runtime mitProgram = Runtime.getRuntime();
Process proces = mitProgram.exec("c:\\orbiprot\\logfiles\\Orbiprot.exe *.log -l:english -p:test.doc");
proces.waitFor();

Programmet kører/afvikler fint hvis jeg bruger tekststrengen i Windows's Kør-facilitet. Kan det være for mange argumenter? Argumenterne SKAL være med for at programmet kan afvikle.
Avatar billede arne_v Ekspert
29. december 2005 - 12:55 #1
2 forslag:

1)  hent input streamen fra process og læs fra den

2)  lav program og argumenter til et string array og kald med det
Avatar billede ng-km Nybegynder
29. december 2005 - 13:27 #2
arne_v:

Den første må jeg lige have lidt forklaring til.

Den anden har jeg prøvet på følgende måde, som jeg ikke er helt sikker på om det er korrekt:

String[] orbiprotArray = new String[4] ;
orbiprotArray[0] = "c:\\orbiprot\\logfiles\\Orbiprot.exe";
orbiprotArray[1] = "*.log";
orbiprotArray[2] = "-l:dansk";
orbiprotArray[3] = "-p:protokolle.doc";

Runtime mitProgram = Runtime.getRuntime();
Process proces = mitProgram.exec(orbiprotArray);
proces.waitFor();

Programmet, Orbiprot, er et konverteringsprogram der tager de angivne .log-filer og konverterer dem til et læsbart dokument i det valgte sprog. Programmet har ikke nogen GUI, og derfor vil jeg gerne lave en GUI hvor jeg kan styre exe-filen med valgfrie argumenter via Java. Filen bliver pt. styre vha. bat-filer, som jeg heller ikke kan starte.
Avatar billede arne_v Ekspert
29. december 2005 - 13:37 #3
det ser korrekt ud

som i:

      Process p = Runtime.getRuntime().exec("ping tv2.dk");
      BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
      String line;
      while((line = br.readLine()) != null) {
        System.out.println(line);
      }
Avatar billede ng-km Nybegynder
29. december 2005 - 19:37 #4
arne_v

Det hjalp at læse fra processen. Den sagde at data ikke fandtes, hvilket jeg jo absolut mente at de gjorde. Det viste sig bare at mit Javaprogram eksekverer exe-filen fra sin egen mappe og ikke fra mappen med exe-filen. Logfilerne skal derfor placeres i Java-mappen, logisk nok når man ved det.

Tak for hjælpen, læg et svar så er pointene dine.
Avatar billede arne_v Ekspert
29. december 2005 - 20:04 #5
ok
Avatar billede arne_v Ekspert
29. december 2005 - 20:05 #6
det er iøvrigt altid godt at læse fra programmets output

hvis man ike læser og programmet skriver meget så kan det hænge alene af den grund
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester