Java Scripting Engine importing my classes not working

The code is worth 1000 words, explaining this :-)

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 exception below:

 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 to import custom classes into ScriptEngine?

+4
source share
2 answers

Looking at the Mozilla Rhino Docs , the solution should either use:

importPackage(Packages.jasim) in a script or use new Packages.jasim.JSTest()

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

+7
source

Similarly, you import javax.script.ScriptEngine; ...

Just make sure your classes are in CLASSPATH

-4
source

Source: https://habr.com/ru/post/1307926/


All Articles