gpt4 book ai didi

javascript - Wildfly 8.2 - ScriptEngineManager.getEngineFactories 在服务器启动时为空

转载 作者:行者123 更新时间:2023-11-29 23:52:35 24 4
gpt4 key购买 nike

我遇到了在 Java 8 (Open JDK) 上运行的 Wildfly 8.2.1 的奇怪行为。我特别提到 Java 8,因为我没有在 Java 7 上看到这个问题。

在启动我的 Wildfly 模块时,我有使用 Java RhinoScriptEngine 加载 JavaScript 的代码。

    List<ScriptEngineFactory> engineFactories = engineManager.getEngineFactories();
ScriptEngine scriptEngine = engineManager.getEngineByName("js");

由于 scriptEngine 被分配为 null,我添加了调试日志并注意到 engineFactories 只是一个空的 List(好吧,engineFactories 本身只是为了调试目的而被获取)。但是,在模块启动完成后,这段代码有效,并列出了 RhinoScriptEngineFactory

Java 8 中是否有一些 Wildfly 8.2 不知道的更改,或者我是否需要向我的模块添加显式依赖项?

最佳答案

脚本引擎管理器使用 service provider枚举 ScriptEngineFactory 的所有实现的机制。在可访问的资源中搜索 ScriptEngineFactory 服务描述

  1. Thread.currentThread().getContextClassLoader() - 构造 ScriptEngineManage 时不带参数
  2. Bootrap 类加载器 - 当使用 null 参数构造 ScriptEngineManager 时
  3. 类加载器——在构造 sw 时使用特定的类加载器

如何创建 ScriptEngineManager?

如果您构建不带参数的 ScriptEngineManager:当模块启动时和模块启动完成时返回 Thread.currentThread().getContextClassLoader() 是什么?

你能为你的模块附加(上传到 pastebin 或其他地方)module.xml 吗?

在 java 8 中,rhino 脚本引擎被 nashorn 脚本引擎取代。你真的在加载模块后得到 RhinoScriptEngineFactory 吗?还是 NashornScriptEngine?

关于javascript - Wildfly 8.2 - ScriptEngineManager.getEngineFactories 在服务器启动时为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42533123/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com