Question

A code is worth 1000 words of explaining it :-)

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";
    }
}

This code will fail with the below exception:

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

How do I import my own classes into the ScriptEngine?

Was it helpful?

Solution

After looking at the Mozilla Rhino docs, the solution is either to use:

importPackage(Packages.jasim) within the script, or to use new Packages.jasim.JSTest()

This is not so clear in the Sun docs regarding the importPackage in the ScriptingEngine docs.

OTHER TIPS

The same way you import javax.script.ScriptEngine;...

Just make sure your classes are in the CLASSPATH

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top