Ich habe ein Python-Skript, das eine Ressource in meinem Projekt ist. Zusammen mit dem Skript ist eine XML-Datei, die das Skript benötigt, um ordnungsgemäß ausgeführt werden. Ich bin in beiden Dateien als Input zu lesen und dann temporäre Dateien für beide erstellen:Wie führe ich ein Skript als Datei in Java aus?
InputStream is = (this.getClass().getClassLoader().getResourceAsStream("InterWebApp.py"));
File script = File.createTempFile("script", ".py");
Files.copy(is, script.toPath(), StandardCopyOption.REPLACE_EXISTING);
InputStream is1 = (this.getClass().getClassLoader().getResourceAsStream("setup.xml"));
File xml = File.createTempFile("config", ".xml");
Files.copy(is1, xml.toPath(), StandardCopyOption.REPLACE_EXISTING);
Aber ich bin nicht sicher, wie das Skript als einen Prozess zu starten:
Process p = Runtime.getRuntime().exec("." + script.getAbsolutePath());
p.waitFor();
Der obige Code führt eine IOException. Wie führe ich script.py
aus und stelle sicher, dass es Zugriff auf config.xml
hat? Im Moment analysiert das Python-Skript die XML-Datei nur mit dem absoluten Pfad, aber dieser Pfad wäre für die temporäre Datei nicht derselbe.
Ich bin sehr rostig auf Java und weiß wenig von der 'File' Klasse, aber das sieht mir suspekt aus:' "." + script.getAbsolutePath() '. Scheint, dass Sie './ '' oder '". \ "' Abhängig von Ihrer Umgebung wünschen, und Sie möchten den grundlegenden Dateinamen, nicht den absoluten Pfad. –
@JuanTomas Ich versuchte '" ./ "+ script.getName()', aber eine Ausnahme wurde ausgelöst, weil der Prozess die Datei – SVN600
nicht finden konnte Könnten Sie bitte die Ausnahme bereitstellen? –