编译Nashorn输出为Java类

时间:2017-11-16 15:16:26

标签: javascript java nashorn

是否可以将Nashorn评估的Javascript输出转换为稍后要调用的Java类文件? (如JSP - > Java - >类文件)

我有一个Jash文件,Nashorn使用它来生成HTML输出。 javascript文件每个组件具有不同的功能,以便为每个组件生成HTML输出。这些组件函数通过“renderServer”函数动态调用,该函数获取该组件的组件名称和JSON数据。

private ScriptEngine nashorn;
ScriptEngineManager scriptEngineManager = new ScriptEngineManager(null);
        this.nashorn = scriptEngineManager.getEngineByName("nashorn");  
         this.nashorn.eval(new FileReader(jsFile);
String compName="myComponent1";// Component 1 name 
String jsonData="{....}";// JSON data input for myComponent
String formatted = "JSON.parse('" + jsonData + "')";

String htmlRender = "renderServer(\"" + myComponent1 + "\"," + formatted + ");";

Object finalResult = nashorn.eval(htmlRender);

我想生成评估的编译输出并调用java类,而不是每次都通过传递组件名称和输入json来执行nashorn.eval。 有可能实现吗?

1 个答案:

答案 0 :(得分:2)

没有。没有办法保持nashorn生成的字节码,并像普通的Java类一样使用它。有一个未记录/不支持的“--persistent-code-cache”来启用已编译脚本的磁盘缓存 - 但Nashorn仍然在内部使用它。你不能通过java代码中的任意类加载器和调用方法加载这些类。