Nashornの評価済み出力をJavaクラスファイルに変換して後で呼び出すことは可能ですか? (JSP - > Java - >クラスファイルなど)JavaクラスとしてコンパイルされたNashorn出力
NashornがHTML出力を生成するために使用するJavascriptファイルがあります。 javascriptファイルにはコンポーネントごとに異なる機能があり、それぞれのHTML出力を生成します。これらのコンポーネント関数は、そのコンポーネントのコンポーネント名とJSONデータを受け取る "renderServer"関数を通じて動的に呼び出されます。
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);
私は評価のコンパイルされた出力を生成し、コンポーネント名と入力JSONを渡すことで、毎回nashorn.evalやっ代わりのようなJavaクラスを呼び出すようにしたいです。 それを達成することは可能ですか?
いいえ、できません。 – Pointy
@Pointy:本当ですか?それはRhinoで可能でした... –
@ T.J.Crowder ?? JavaScriptを "ラップ"してJavaのように呼び出すことができますが、JavaScriptを実際にコンパイルするのと同じではありません。それはRhinoによってJavaScriptで評価されていましたが、Nashornについて知っていることから、評価方法はバイトコードに変換されているとは限りません。 – Pointy