如何让OSGiScriptEngineManager运行

时间:2017-11-24 14:43:13

标签: java osgi apache-felix jsr223 java-scripting-engine

我对OSGi来说并不是一个全新的新手,但显然新手足够了。

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

我也理解Java的ServiceLoader API和OSGi的捆绑包之间的冲突。这个Is OSGi fundamentally incompatible with JSR-223 Scripting Language Discovery?指的是一个博客,说明Felix已经找到了解决方法。

一切都好。但是之后。使用该OSGiScriptEngineManager sniplet需要导入什么?

1 个答案:

答案 0 :(得分: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();
    }
}