2012-04-11 20 views
0

Hallo Ich bin Pfad Zeichenfolge an Groovy Script von Scala wie unten übergeben, aber wenn die Zeichenfolge enthält 2 Bytes Zeichen, wird die Formatierung verstümmelt. Wie übergibt man String an grooviges Script?Wie übergibt man 2 Bytes String, ohne in der Groovy Script Engine verstümmelt zu werden?

var gse = new GroovyScriptEngine() 
var scriptClass = gse.loadScriptByName("script.groovy") 
var i = scriptClass.newInstance().asInstanceOf[GroovyObject] 
i.setProperty("DIR_HERE", new File(".").getAbsolutePath()) 
// when the path contains 2 bytes code like "c:/あああああ/bleh", 
// the passed string will be garbled and will be like "c:/????????????/bleh" 
+0

Was ist 'scriptClass.newInstance(). asInstanceOf [GroovyObject]' soll tun? –

+0

Entschuldigung. Ich habe vergessen, eine Zeile in den Code zu schreiben. bearbeitet. Das Skript selbst funktioniert gut, wenn der übergebene Pfad keinen 2-Byte-Code enthält. – Elonoa

+0

Ahhh, das ist die Scala, in die Sie eingebettet sind, nicht wahr? Nicht Java, wie du gesagt hast? Das Scala-Tag wurde vor 36 Minuten bearbeitet, weil Sie in der Frage keine Scala erwähnt haben. Könnte es sich lohnen, es wieder hinzuzufügen? –

Antwort

1

Wenn ich schreibe script.groovy wie:

println DIR_HERE 

Und dann eine neue Datei run.groovy wie:

def gse = new GroovyScriptEngine('.') 
def scriptClass = gse.loadScriptByName("script.groovy") 
def i = scriptClass.newInstance() 
i.setProperty("DIR_HERE", 'c:/あああああ/bleh') 
i.run() 

Dann, wenn ich laufen:

groovy run.groovy 

aus dem Befehl Linie, es druckt:

c:/あああああ/bleh 
+0

Danke. Nachdem ich das gelesen habe, habe ich einige Tests gemacht und es war nicht wirklich groovy Fehler. Dumm von mir, aber es half mir aufzuspüren, was falsch war. – Elonoa