# Programm aus Java starten



## naeko (17. Juni 2008)

Hallo,

ich hab folgendes Problem: ich möchte ein Perl-Script aus Java starten. An sich ist das kein Problem:

```
Runtime a = Runtime.getRuntime();
Process p = a.exec("C:\\perl myperlScript.pl");
```

Nur ist es so dass mein Perl-Script ein Perl-Modul inkludiert und dieser wird bei der Ausführung vom Java-Code nicht gefunden, obwohl er im gleichen Verzeichnis liegt wie der Perl-Script selbst.
Ein Workaround ist: Script samt Modul unter System.getProperty("user.dir") abzulegen, dann läufts, aber leider ist diese Lösung inakzeptabel für mich

Weiß jemand wie man das sonst realisieren könnte?


----------



## matdacat (17. Juni 2008)

Bin kein Perl-Experte, aber gibt's keinen Parameter über den sich so ein Include-Verzeichnis angeben lässt?

edit: Hab schnell nachgesehen: -I<directory> sollte weiterhelfen.


----------



## Looky (17. Juni 2008)

Tja, java ruft das teil zwar auf aber aus dem context von user.dir wie du richtig gesehen hast.

versuch mal den umweg über eine batch datei, dass sollte eigentlich gehen. Quick and dirty


----------



## naeko (17. Juni 2008)

leider geht es auch mit der batch datei nicht, oder meintest du es anders, also ich ruf jetzt praktisch ein batch-Datei aus Java auf. Diese Datei hat den Inhalt "perl myscript.pl"..........und der Fehler ist wieder der gleiche.


----------



## zerix (17. Juni 2008)

Ich kenne mich mit Perl zwar nicht aus, aber liegt es vielleicht dann vielleicht an deinem Perl-Script und nicht an Java bzw der Batch-Datei?

MFG

Sascha


----------



## naeko (17. Juni 2008)

nein,
wenn ich den Perl-Script aus der Shell aufrufe dann funktioniert alles einwandfrei: das Problem ist folgendes:

mein perl-script kann ich über einen absoluten (bzw. relativen Pfad) direkt in Java angeben, wohingegen das Perl-Modul in dem Pfad gesucht wird wo ich den Aufruf mache:
also ruf ich mein perl via D:\perl\myperl.pl auf (wird mein script gefunden), das Perl-Modul liegt im gleichen Verzeichnis wird aber nicht dort sondern unter System.getProperty("user.dir"), (z.B. C:\\eclipse\workspace\) gesucht.
Da ich am Perl selber nix machen darf, muss ich irgendwie versuchen sowohl das Script als auch das Modul aufzurufen.................nur will es noch irgendwie nicht richtig


----------



## zerix (17. Juni 2008)

Schau dir mal den ProcessBuilder in Java an, da kannst du dein Pfad in dem gearbeitet wird angeben.

MFG

Sascha


----------



## matdacat (17. Juni 2008)

Was spricht gegen meine weiter oben vorgeschlagene Lösung?


----------



## naeko (17. Juni 2008)

darf leider am perl-script nix pfuschen.


----------



## Anime-Otaku (17. Juni 2008)

zerix hat gesagt.:


> Schau dir mal den ProcessBuilder in Java an, da kannst du dein Pfad in dem gearbeitet wird angeben.
> 
> MFG
> 
> Sascha



/zustimm^^

der ProcessBuilder ist der Weg ab Java 5 mit externen Anwendungen umzugehen ;-)


----------



## matdacat (17. Juni 2008)

Wer spricht denn vom Perlskript?!

```
Runtime a = Runtime.getRuntime();
Process p = a.exec("C:\\perl -I<deinVerzeichnis> myperlScript.pl");
```


----------



## zerix (17. Juni 2008)

Trotzdem sollte der ProcessBuilder verwendet werden. ;-)

MFG

Sascha


----------

