2016-07-08 12 views
2

Im Moment habe ich den absoluten Dateipfad fest in mein Java-Programm geschrieben, so dass das Python-Skript ausgeführt werden kann. Wenn mein Programm jedoch auf der Unternehmensplattform bereitgestellt wird, ist dieser Dateipfad nicht mehr korrekt. Das Skript befindet sich im selben Verzeichnis der Klasse, die es aufruft, und diese Verzeichnisstruktur ändert sich nicht. Gibt es eine Möglichkeit, das Skript auszuführen, nur weil es sich im selben Verzeichnis befindet?Wie führe ich ein Python-Skript von Java ohne fest codierten Dateipfad aus?

+0

Verwenden Sie 'org.python.util.PythonInterpreter'? –

+0

warum brauchst du absoluten weg? Wenn es auf dem Klassenpfad ist, sollte es die Möglichkeit geben, es mit "./something/script" aufzurufen, was funktionieren würde, wohin auch immer Ihre App gebracht wird. –

+0

@CoderinoJavarino scriptPath.exists() gibt false für jeden relativen Pfad und nur für den absoluten Pfad zurück. – SVN600

Antwort

2

können Sie diese verwenden, um den Dateipfad zurückzugeben, die die Java-Klasse von ausgeführt wurde:

final File path = new File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath()); 

Sie können dann dieses path-Objekt verwenden, um das aktuelle Verzeichnis zu laden und Ihren Python-Skript ausführen.

0

Nachdem ich versucht habe, was @Confiqure vorgeschlagen, fand ich, dass der Pfad einen Schritt zu weit in die Verzeichnisstruktur meines Programms ging. Stattdessen habe ich versucht:

String path = new File("").getAbsolutePath + "/my/path/to/script"; 

Die new File("").getAbsolutePath zurück den Weg zu meiner Anwendung und von ihrem mir den relativen Pfad fest einprogrammiert, wohl wissend, dass der Weg in Bezug auf meine eigene Anwendung würde ich nie ändern.