Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

 

Using Rhino JSR-223 engine with JDK8

Why?

Mozilla Rhino based JSR-223 (javax.script) engine has been removed in Oracle's JDK8 implementation. But OpenJDK8 and Oracle JDK8 implementation have nashorn replacementIn JDK8, Nashorn engine replaces Rhino based jsr-223 engine. It is recommended that you migrate your script application to Nashorn. But, to have time to migrate your JavaScript code to nashorn, you may want to stick to Rhino based jsr-223 implementation on jdk8 (as interim solution). If this is so, this document is for you.

...

Clone Rhino source code from this git repo, into "$rhino_dir"

https://github.com/mozilla/rhino

Use ant to build js.jar
    
    $rhino_dir/build/rhino1_7R5pre/js.jar

If you want to get pre-built binary instead, you can download from here:
https://developer.mozilla.org/en-US/docs/Rhino/Download_Rhino

    https://github.com/downloads/mozilla/rhino/rhino1_7R4.zip

In either way, you'd get js.jar file in this step.

...

You've two jars now: js.jar and js-engine.jar. You can put these two jars in your CLASSPATH. When creating script engine in your app, you need to use "rhino" as engine name. 

Code Block
titleUsing Rhino jsr-223 engine from Java
import javax.script.*;

public class Main {
    public static void main(String[] args) throws Exception {
        ScriptEngineManager m = new ScriptEngineManager();
        // specifically look for "rhino" engine
        ScriptEngine engine = m.getEngineByName("rhino");
        System.out.println(engine.eval("33 + 232"));
    }
}

// compile above using

javac Main.java

// run it using

java -cp js-engine.jar:js.jar Main

You can also use jrunscript" in jdk8 along with this rhino based script engine:

...