导入我的类的Java Scripting Engine不起作用

时间:2010-04-25 09:10:06

标签: java scriptengine

代码值得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?

2 个答案:

答案 0 :(得分:7)

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

脚本中的

importPackage(Packages.jasim),或使用new Packages.jasim.JSTest()

有关ScriptingEngine文档中的importPackage的Sun文档中不太清楚。

答案 1 :(得分:-4)

导入javax.script.ScriptEngine; ...

的方式相同

确保您的课程在CLASSPATH