Avatar billede finetheghost Nybegynder
19. maj 2001 - 15:29 Der er 8 kommentarer og
1 løsning

Execute en fil fra et java program

Jeg er igang med at lave et program der henter nogle data fra en Access database og på baggrund af disse data så genererer en XML-fil. Nu skal jeg så bare have vist disse data fra XML filen og har derfor skrevet en XSL. Disse to filer skal jeg have Parset igennem LotusXalan parser og have lavet en HTML fil. Denne proces skal dog foregå hvert 2. minut og derfor skal jeg fra mit java program have kørt en bat-fil der starter Xalan parseren.

Jeg har selv prøvet med exec(\"c:\\test\\html.bat\") men det virker ikke rigtig. Jeg er heller ikke sikker på at det er den rigtige kommando.

Hvordan får jeg startet den bat-fil fra mit java program ???

Hilsen Tommy
Avatar billede logical Nybegynder
19. maj 2001 - 15:35 #1
Med disse linier får jeg started notesblokken fint nok :-)

    Runtime runtime = Runtime.getRuntime();
    Process p = runtime.exec(\"notepad\");
    p.waitFor(); // Wait for process to terminate

I din exec linie, skal du nok skrive \"C:\\\\test\\\\html.bat\" for at fange den, men så skulle det også virke
Avatar billede finetheghost Nybegynder
19. maj 2001 - 15:56 #2
Hmm..... Skal der dertil includes et eller andet bibliotek ???

Hvis jeg skriver

Process p=runtime.exec(\"c:\\\\test\\\\html.bat\");

Så får jeg følgende fejl :

java:58: illegal escape character
Process p = runtime.exec(\"c:\\\\test\\html.bat\");
Hvor der så peges på a\'et i bat.
Jeg kører med \"Kawa for java\" som udviklingsværktøj


Avatar billede logical Nybegynder
19. maj 2001 - 16:12 #3
Det hele er i java.lang.

Jeg har lige afprøvet det i VAJ samt i KAWA (3.21), og fik ingen problemer med at køre \"C:\\\\temp\\\\html.bat\" i mit tilfælde. Både compile og execute virkede.

Jeg kan se af din compilerfejl, at der kun er en backslash efter test. Og \\\\ er en lovlig escape sequence, så kan du evt. ikke bare for tilfældets skyld slette strengen, og skrive den igen.

Da jeg indførte en compilerfejl (\\e) pegede kawa på bogstavet to pladser til højre, og hvis man sammenholder det med dit tilfælde må du have problemer med punktum.. ??
Avatar billede finetheghost Nybegynder
19. maj 2001 - 16:15 #4
he he...Det var bare mig der fumlede.  Havde glemt en \"\\\"

Nu kører det hele fint. Nu kan jeg bygge en html med data fra database, over XML/XSL og til html.
Kanon
Mange tak for hjælpen logical
Avatar billede agermose Nybegynder
19. maj 2001 - 17:17 #5
det er vist noget med at det virker for executables, men ikke bat-filer. Der skal man bruge:

Runtime.getRuntime().exec(\"cmd /K start c:\\\\test\\html.bat\");

men da jeg ikke bruger windows, kan jeg ikke teste det.
Avatar billede agermose Nybegynder
19. maj 2001 - 17:18 #6
ups... det var vist ikke på en opdateret side... så ikke at det var afklaret. Beklager.
Avatar billede finetheghost Nybegynder
19. maj 2001 - 19:44 #7
Det gør skam ikke noget. Det er altid godt med lidt nye input :-)

Jeg har dog et spørgsmål til det du skriver agermose :

hvad er \"/K\" for noget ???
Avatar billede agermose Nybegynder
20. maj 2001 - 09:17 #8
der kommer jeg lidt til kort, da jeg ikke har windows. Jeg har heller ikke kunne finde en webside der levere svaret. Jeg fik tipet fra en webside, hvor der stod:

Runtime.getRuntime().exec(\"cmd /K start run.bat\");
                                This worked for me. You may use /K or /C options. Replace run.bat with your batch filename.

meget mere kan jeg ikke komme på. Desvære.
Avatar billede logical Nybegynder
20. maj 2001 - 10:06 #9
Hvis du skriver cmd /? i prompten får du en beskrivelse af parametre.

Du udfører en kommando, der starter dit batchjob i en separat process (start x), og cmd for at få en kommandolinie. /K betyder \"udfører den angivne kommando og fortsætter med at køre\", og da du ikke skriver yderligere på din linie end start x, er det fuldstændigt ligegyldigt.

Hvis du skriver start x i stedet for bare x, vil du ikke være i stand til at kommunikere med programmet vhja InputStream og OutputStream, som man kan få fra Process objektet, og du kan heller ikke vente på det bliver færdigt.

Til gengæld, hvis du skriver start, er du sikker på, at den anden process ikke belaster dit program (hvis der var alvorlige fejl etc.)


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