При попытке перенести старый код с движком Rhino на 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();}
}
}