将 Nashorn 输出编译为 Java 类



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

我有一个Javascript文件,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。有可能实现吗?

No.没有办法持久化 nashorn 生成的字节码并像普通的 Java 类一样使用它。有一个未记录/不受支持的"--persistent-code-cache"来启用已编译脚本的磁盘缓存 - 但 Nashorn 仍在内部使用它。您不能通过任意类加载器加载这些类并从 Java 代码中调用其方法。

最新更新