5

一个代码值得 1000 字来解释它:-)

package jasim;

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class JSTest {

    public static void main(String[] args) throws ScriptException {
        ScriptEngine jse = new ScriptEngineManager().getEngineByExtension("js");

        jse.eval("println(new jasim.JSTest().toString)");

    }

    @Override
    public String toString() {
        return "JSTest Object";
    }
}

此代码将失败,并出现以下异常:

Exception in thread "main" javax.script.ScriptException: sun.org.mozilla.javascript.internal.EcmaError: ReferenceError: "jasim" is not defined. (<Unknown source>#1) in <Unknown source> at line number 1

如何将自己的类导入 ScriptEngine?

4

2 回答 2

7

查看Mozilla Rhino 文档后,解决方案是使用:

importPackage(Packages.jasim)在脚本中,或使用new Packages.jasim.JSTest()

这在 Sun 文档中关于 ScriptingEngine 文档中的 importPackage 不是很清楚。

于 2010-04-25T09:38:07.107 回答
-4

与您导入的方式相同javax.script.ScriptEngine;...

只需确保您的课程在 CLASSPATH 中

于 2010-04-25T09:30:07.523 回答