2017-10-29 3 views
0

Ich habe ein Skript, das zum Ressourcenabschnitt des Projekts hinzugefügt wird.Ausführen eines Skripts in einem Ressourcenpaket in einem Jar

Beim Testen funktioniert alles wie erwartet, aber wenn das Projekt in ein Jar kompiliert wird, ist die Ressource nicht mehr als "lose" Datei verfügbar. Aber stattdessen im Glas selbst.

Wie kann ich das Skript in diesem Fall immer noch verwenden?

in Entwicklung das Skript wie folgt ausgeführt werden:

val script: String = getClass.getResource("/scripts/myScript.py").getPath 
... 
s"python $script $flags"! 
+0

Alles verhindert, dass Sie es in eine temporäre Datei extrahieren und Python gegen diese Datei ausführen? –

+0

Haben Sie überlegt, [Jython] (http://www.jython.org/) zu verwenden? –

+0

Diese Antwort sollte helfen: https://Stackoverflow.com/a/26204566/706557 –

Antwort

1

Verwendung mit Jython wie folgt:

import java.io.InputStreamReader 
import javax.script.ScriptEngineManager 

val pyEngine = new ScriptEngineManager.getEngineByName("python") 
val script = new InputStreamReader(getClass.getResourceAsStream("/scripts/myScript.py")) 
pyEngine.eval(script) 

Siehe auch information about installing the latest release of Jython.

+0

Ich möchte nicht Python verwenden - ich habe viele Ressourcen –

+0

Aber das Skript ist ein Python-Skript. Meintest du, dass du Jython nicht benutzen willst? –

+0

Ich habe nur ein Beispiel gegeben. Es könnte ein Ruby-Skript oder ein Shell-Skript oder eine beliebige Ressource sein. –

Verwandte Themen