首页 > 解决方案 > 嵌入式 JRuby 访问 ScriptEngine 可用的类

问题描述

我正在向已经支持 Jython 的系统添加 JRuby 支持。

Jython 对父类加载器环境的访问权与 JRuby 的访问权之间似乎有些不同。Jython 似乎可以完全访问调用 python 脚本的 ScriptEngine 的任何类,JRuby 似乎只能访问 java.* 项。

以下 Jython 代码有效并创建了一个日志条目:

from org.slf4j import LoggerFactory

def scriptLoaded(id):
  LoggerFactory.getLogger("org.openhab.core.automation.examples").info("Hello world!")

以下 jruby 代码确实会导致错误:

def scriptLoaded(id)
  org.slf4j.LoggerFactory.getLogger("org.openhab.core.automation.examples").info("Hello Ruby")
end

错误:

NameError: missing class name (`org.slf4j.LoggerFactory')
  method_missing at org/jruby/javasupport/JavaPackage.java:252
    scriptLoaded at <script>:35

这是在同一系统中运行的。

JRuby 是否有一种方法可以搜索其父类加载器?

标签: jruby

解决方案


推荐阅读