有一个eclipse插件(名称:A),它内部调用JS脚本引擎来评估一些条件。 插件的使用者不了解 JS 脚本实现代码,可以自由选择他们的自定义 JS 脚本实现。
我们在插件 (B) 中导入“A”插件,并且我们使用 GraalVM JS 脚本引擎。 似乎 GraalVM 使用 TruffleLogger 进行日志记录并写入控制台
我们想写入 Eclipse 错误日志。不幸的是,我找不到任何方法。
任何指针如何实现相同的效果?
无需了解用于初始化 ScriptEngine 的代码即可附加的任何自定义记录器。
有任何编程方式来设置 TruffleLogger?
ScriptEngineManager engineManager = new ScriptEngineManager();
this.scriptEngine = engineManager.getEngineByName("JS");
谢谢, 帕尔
满足您要求的代码:
ScriptEngine engine = new ScriptEngineManager().getEngineByName("js");
Bindings bindings = engine.getBindings(ScriptContext.ENGINE_SCOPE);
bindings.put("polyglot.js.allowHostAccess", true);
bindings.put("polyglot.js.allowHostClassLookup", (Predicate<String>) s -> true);
bindings.put("truffleLogger", new TruffleLogger());
engine.eval("(truffleLogger instanceof Java.type('java.lang.TruffleLogger'));");