Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javax.script.ScriptEngine在运行时失败_Java_Python_Scriptengine - Fatal编程技术网

javax.script.ScriptEngine在运行时失败

javax.script.ScriptEngine在运行时失败,java,python,scriptengine,Java,Python,Scriptengine,有什么想法吗? 公共班机{ public static void main(String[] args) throws ScriptException { ScriptEngine engine = new ScriptEngineManager().getEngineByName("python"); engine.put("hello_str", ""); engine.eval("for i in range(10):"); engine.eval("

有什么想法吗? 公共班机{

public static void main(String[] args) throws ScriptException {
    ScriptEngine engine = new ScriptEngineManager().getEngineByName("python");
    engine.put("hello_str", "");
    engine.eval("for i in range(10):");
    engine.eval("   hello_str += str(i)");
    Object x = engine.get("hello_str");
    System.out.println("x: " + x);
}
}

错误是

线程“main”javax.script.ScriptException中出现异常:语法错误:输入“”不匹配,应在第1行第18列处缩进 位于org.python.jsr223.PyScriptEngine.scriptException(PyScriptEngine.java:170) 位于org.python.jsr223.PyScriptEngine.compileScript(PyScriptEngine.java:76) 位于org.python.jsr223.PyScriptEngine.eval(PyScriptEngine.java:33) 位于javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:247) 位于javaapplication2.Main.Main(Main.java:23) 原因:文件“”,第1行 对于范围(10)内的i: ^
SyntaxError:不匹配的输入“”,需要缩进,看起来您试图计算以下行中的不完整语句:

engine.eval("for i in range(10):");
engine.eval("   hello_str += str(i)");
在这里,我假设
eval()
正在尝试逐个计算这些值,并且在
for
之后没有发现任何错误,因为这是一个不完整的语句。试试这个:

engine.eval("for i in range(10):\n   hello_str += str(i)");
在这种情况下不需要换行符,但如果希望在循环体中包含多个语句,则需要换行符,例如:

engine.eval("for i in range(10):\n   hello_str += str(i)\n   print i");
还要注意的是,在上面的例子中,每条新行后面的间距应该相等。事实上,我建议在评估脚本字符串之前将其完全组装起来。或者更好的是,从一个单独的.py文件中读取它