05. december 2003 - 15:50Der er
9 kommentarer og 1 løsning
hvordan bruger man run.exec i Java?
Hej jeg har problemer med run.exec. Jeg ville gerne have mit program til at kompilere en tex-fil, dernæst skulle den danne en pdf-fil påbaggrund af den genererede dvi-fil?
Problemet er at efter jeg har kaldt run.exec() første gang så vil jeg kalde metoden igen og bruge den fil som det første kald har skabt, men anden gang jeg kalder metoden giver den mig fejlmeddelelse om at filen ikke findes,
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
Mit problem er ikke at køre et enkelt program men at bruge output-filen fra et program som argument til et andet program, fordi jeg ønsker at danne en tex fil kompilere den så jeg får en dvi-fil og sidenhen lave denne om til en pdf. Men måske er der en lettere måde at gøre det hele på?
Du må meget undskylde at jeg er så langsom, men her er den kode jeg har problemer med, da jeg ikke umiddelbart kan se hvordan din kommentar løser mit problem.
String[] argsArray = {latexCommand, texArgument}; String[] argsArray2 = {dvipdfmCommand, dviArgument}; String[] argsArray3 = {acrobatCommand, pdfArgument}; try { Runtime.getRuntime().exec(argsArray); //virker fint Runtime.getRuntime().exec(argsArray2); //virker fint //nedenstående virker først anden gang jeg kører programmet? //jeg går udfra det er fordi ovenstående ikke når at skrive den fil færdig //som skal bruges som arguement i nedenstående kald.
OK - så er der ikke nogle af mine hidtidige forslag du kan bruge.
Ny forslag:
Erstat:
Runtime.getRuntime().exec(args);
med:
Process p = Runtime.getRuntime().exec(args); BufferedInputStream bis = new BufferedInputStream(p.getInputStream()); BufferedReader in = new BufferedReader(new InputStreamReader(bis)); BufferedInputStream bes = new BufferedInputStream(p.getErrorStream()); BufferedReader err = new BufferedReader(new InputStreamReader(bes)); String line; while ((line = in.readLine()) != null) { System.out.println(line); } while ((line = err.readLine()) != null) { System.out.println(line); }
Hej Arne_v tusinde tak, nu virker det hele. Jeg er nybegynder på eksperten, så hvordan får du så dine point? Er det noget med at du skal sende mig et svar eller hvordan?
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.