gpt4 book ai didi

javax.script.ScriptEngine 在运行时失败

转载 作者:行者123 更新时间:2023-11-30 09:56:45 24 4
gpt4 key购买 nike

有什么想法吗?公开课主要{

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: SyntaxError: mismatched input '' expecting INDENT in at line number 1 at column number 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): ^SyntaxError: 不匹配的输入 '' 期待 INDENT

最佳答案

看起来您正在尝试评估以下行中的不完整语句:

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 文件中读取它。

关于javax.script.ScriptEngine 在运行时失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2159273/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com