[java]Runtime executable uitvoeren in bepaalde directory

Pagina: 1
Acties:

  • JeroenTheStig
  • Registratie: Mei 2000
  • Laatst online: 16:06
Ik ben bezig om een x aantal handelingen die via een executable moeten worden gedaan te automatiseren met behulp van een java programma. Ik gebruik hiervoor de java.lang.Runtime en de java.lang.Process classes.

Aan de executable die uitgevoerd gaat worden, moeten enkele argumenten mee worden gegeven. Twee hiervan zijn verwijzingen naar bestanden, waarvan ik vanuit mijn javaprogramma de padnaam dus vast moet gaan leggen:

code:
1
2
C:/Win32app/oracle/10gds/bin/ifcmp90.exe module=p:\syst\cursf000.pll 
output_file=p:\syst\cursf000.txt logon=no module_type=library script=yes


Het probleem is dat in dit geval mijn executable vreemde foutmeldingen geeft omdat ik harde padnamen mee heb gegeven. Nu heb ik geprobeerd deze fout te voorkomen door in een dosvenster in de directory p:/syst te gaan staan en de volgende commando uit te voeren:

code:
1
2
C:/Win32app/oracle/10gds/bin/ifcmp90.exe module=cursf000.pll 
output_file=cursf000.txt logon=no module_type=library script=yes


De twee bestanden die ik meegeef als argument heb ik nu dus zonder padnaam opgegeven, met als gevolg dat er geen foutmeldingen worden gegeven bij het uitvoeren ervan. Het probleem is nu hoe ik dit in mijn java programma implementeer, aangezien de user.dir niet op p:/syst staat. Ik kan natuurlijk mijn programma uitvoeren vanuit p:/syst, maar dit is niet helemaal de bedoeling, aangezien er ooit nog een GUI omheen gebouwd gaat worden en omdat ik ook bestanden uit andere directories wil gaan gebruiken.

Is het mogelijk om de Runtime vanuit een andere directory te laten starten, door bijvoorbeeld de user.dir aan te passen (wat me onwaarschijnlijk lijkt) of iets anders?

Verwijderd

Het probleem dat je hebt met de 'harde padnamen' wordt volgens mij veroorzaakt door de \ in de string. Java ziet die dan als escape character, dus je moet een \ als \\ typen in een string. Nog mooier is het met de file.seperator property te werken, maar daar zal ik je niet mee lastig vallen :)

Je kunt aan de Runtime.getRuntime().exec() functie ook een 'working dir' opgeven, waarschijnlijk is dat wat je wil. Meer info hierover vind je hier:

[url=http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Runtime.html#exec(java.lang.String[],%20java.lang.String[],%20java.io.File)]Klik hier[/url]

[ Voor 5% gewijzigd door Verwijderd op 07-04-2005 11:58 . Reden: Firefox :p ]


  • JeroenTheStig
  • Registratie: Mei 2000
  • Laatst online: 16:06
Verwijderd schreef op donderdag 07 april 2005 @ 11:57:
Het probleem dat je hebt met de 'harde padnamen' wordt volgens mij veroorzaakt door de \ in de string. Java ziet die dan als escape character, dus je moet een \ als \\ typen in een string. Nog mooier is het met de file.seperator property te werken, maar daar zal ik je niet mee lastig vallen :)

Je kunt aan de Runtime.getRuntime().exec() functie ook een 'working dir' opgeven, waarschijnlijk is dat wat je wil. Meer info hierover vind je hier:

[url=http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Runtime.html#exec(java.lang.String[],%20java.lang.String[],%20java.io.File)]Klik hier[/url]
De working dir aan de constructor van Runtime meegeven is inderdaad de oplossing. Het gaat nu helemaal goed :)
bedankt!

[ Voor 3% gewijzigd door JeroenTheStig op 07-04-2005 12:26 ]