我面临着在Java 8(Open JDK)上运行Wildfly 8.2.1的奇怪行为。我特别提到了Java 8,因为我没有在Java 7上看到这个问题。
在我的Wildfly模块启动时,我有使用Java RhinoScriptEngine加载JavaScripts的代码。
List<ScriptEngineFactory> engineFactories = engineManager.getEngineFactories();
ScriptEngine scriptEngine = engineManager.getEngineByName("js");
由于scriptEngine
被分配为null
,我添加了调试日志,并注意到engineFactories
只是一个空的List
(好吧,engineFactories
本身正在提取仅用于调试目的)。但是,在模块启动完成后,这个确切的代码可以工作,并列出RhinoScriptEngineFactory
。
Java 8中是否存在Wildfly 8.2未发现的变化,或者我是否需要向模块添加显式依赖项?
答案 0 :(得分:1)
脚本引擎管理器使用service provider机制枚举ScriptEngineFactory的所有实现。在可从
访问的资源中搜索ScriptEngineFactory服务描述如何创建ScriptEngineManager?
如果你构造没有参数的ScriptEngineManager:什么在模块启动时和模块启动完成时返回Thread.currentThread()。getContextClassLoader()?
您可以为您的模块附加(上传到pastebin或某处)module.xml吗?
在java 8中,rhino脚本引擎被nashorn脚本引擎取代。模块加载后你真的得到了RhinoScriptEngineFactory吗?或者是NashornScriptEngine?