Докато се опитвах да пренеса стар код, работещ с Rhino engine към Nashorn в Java 8, получих проблема, статични свойства/методи не могат да бъдат достъпни от изпълняващ js скрипт. Ако използвам Rhino, работи перфектно. Не знам какво се случва с внедряването на новия двигател на Nashorn.
import javax.script.*;
public class StaticVars {
public static String myname = "John\n";
public static void main(String[] args) {
try{
ScriptEngine engine;
ScriptEngineManager manager = new ScriptEngineManager();
engine=System.getProperty("java.version").startsWith("1.8")?
manager.getEngineByName("Nashorn") : //j1.8_u51
manager.getEngineByName("JavaScript"); //j1.7
engine.put("staticvars", new StaticVars());
engine.eval("print(staticvars.myname);");
//print "John" if ran with java 7
//print "undefined" if ran with java 8
} catch(Exception e){e.printStackTrace();}
}
}