Avatar billede jespersahner Nybegynder
12. februar 2005 - 21:10 Der er 7 kommentarer og
1 løsning

Runtime.getRuntime() hænger

Jeg forsøger at kompilere en .java-fil on the fly med:
Runtime.getRuntime().exec("javac...").waitFor();
- men sessionen "hænger" og kommer ikke videre.

Hvad kan dette skyldes?
Avatar billede arne_v Ekspert
12. februar 2005 - 22:05 #1
Prøv og åben output stream og læs fra den.
Avatar billede arne_v Ekspert
12. februar 2005 - 22:06 #2
Process p = Runtime.getRuntime().exec("bla bla");
      BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
      String line;
      while((line = br.readLine()) != null) {
        System.out.println(line);
      }
Avatar billede arne_v Ekspert
12. februar 2005 - 22:10 #3
Det er naturligvis valgfrit at skrive det læste ud.

Men hvis der er en del output så kan processen hænge fordi output ikke
bliver læst.
Avatar billede jespersahner Nybegynder
14. februar 2005 - 16:09 #4
->arne_v: Det er præcis sagen! Hvordan pokker vidste du det? :-) Smid lige et svar.
Avatar billede arne_v Ekspert
14. februar 2005 - 16:11 #5
svar
Avatar billede arne_v Ekspert
14. februar 2005 - 16:11 #6
Det er et "kendt problem"
Avatar billede arne_v Ekspert
14. februar 2005 - 16:15 #7
Hvis du bruger Runtime exec en del så kan jeg anbefale:
  http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html
Avatar billede jespersahner Nybegynder
14. februar 2005 - 16:21 #8
->arne_v: Det gør jeg! Artiklen ser meget lærerig ud.

Kunne stadig godt tænke mig den helt elegante løsning, hvor man ikke skriver til en fil, som man derefter kompilerer, men skriver til en stream (tænker her på brug af 'javac').
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