19. maj 2001 - 15:29Der 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 ???
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
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.. ??
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.
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.)
Synes godt om
Ny brugerNybegynder
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.