1

我不是 OSGi 的新手,但显然足够新手。

我想要做的是编写一个 OSGi (Apache Felix) 包并使用 Java 脚本 API (JSR-223) 和例如 Groovy。为此,我安装了 groovy 2.4.12,它已经是一个 OSGi 包,并且我将 Groovy Runtime (2.4.12) 视为 Felix 远程 Shell 控制台中的一个活动服务。

我也理解 Java 的 ServiceLoader API 和 OSGi 的包之间的冲突。这是 OSGi 从根本上与 JSR-223 脚本语言发现不兼容吗?指的是一篇博客,指出 Felix 已经找到了解决方法。

都好。但是之后。我需要导入什么才能使用该 OSGiScriptEngineManager 片段?

4

1 回答 1

1

如果你使用 Maven,这样的事情可能会起作用:

 <dependency>
     <groupId>org.apache.felix</groupId>
     <artifactId>org.apache.felix.mishell</artifactId>
     <version>1.0.0</version>
 </dependency>

但我认为这个包从未发布过,可能是一个死项目。好吧,您可以尝试从https://github.com/Dexels/apachecon/tree/master/org.apache.felix.mishell自己编译

我尽量避免使用 ServiceLoaders,如果你说他们提供 Groovy 作为 OSGi 服务,那么你真的应该使用它。

如果您只想使用 Groovy,我建议这样做:

import org.codehaus.groovy.jsr223.GroovyScriptEngineFactory;
import javax.script.ScriptEngine;

public class Test {

    public static void main(String[] args) {
        ScriptEngine e = new GroovyScriptEngineFactory().getScriptEngine();
    }
}
于 2017-11-25T03:30:33.627 回答