2016-11-20 62 views
0

有没有人有幸将脚本引擎加载到卡拉夫。我已经看到了关于加载脚本引擎的一些旧链接到OSGi的容器: - https://devnotesblog.wordpress.com/2011/09/07/scripting-using-jsr-223-in-an-osgi-environment/ - Is OSGi fundamentally incompatible with JSR-223 Scripting Language Discovery?需要帮助将脚本引擎加载到卡拉夫

但有没有运气迄今加载到karaf。我有什么,我想在这里做简单的示例项目:

https://gitlab.com/mkwyche/helpful-hints/tree/master/renjin-karaf

每次我尝试加载脚本。使用以下行:

 ScriptEngineManager manager = new ScriptEngineManager(); 

    // create a Renjin engine: 
    engine = manager.getEngineByName("Renjin"); 
    // check if the engine has loaded correctly: 
    if(engine == null) { 
     throw new RuntimeException("Renjin Script Engine not found on the classpath."); 
    } 

我得到一个类未发现异常:

at java.lang.Thread.run(Thread.java:745)[:1.8.0_60] 

产生的原因:了java.lang.RuntimeException:韧劲脚本引擎不会在类路径中。 在datadidit.helpful.hints.renjin.karaf.RenjinKarafTest.testRuntime(RenjinKarafTest.java:24) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)[:1.8.0_60] 在sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)[:1.8.0_60] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.8.0_60] at java.lang.reflect.Method.invoke(Method.java :497)[:1.8.0_60] at org.apache.aries.blueprint.utils.ReflectionUtils.invoke(ReflectionUtils.java:299)[12:org.apache.aries.blueprint.core:1.6.2] at org.apache.aries.blueprint.container.BeanRecipe.invoke(BeanRecipe.java:980)[12:org.apache.aries.blueprint.core:1.6.2] at org.apache.aries.blueprint.container.BeanRecipe .runBean ProcInit(BeanRecipe.java:736)[12:org.apache.aries.blueprint.core:1.6.2] ... 40更

我试图嵌入束,动态进口等.. 任何建议将不胜感激。

谢谢。

+0

在karaf 4.0.7中运行并且拥有java 1.8 – mkwyche

回答

1

通过ScriptEngineManager加载ScriptEngine可能很复杂,因为ScriptEngineManager使用的ClassLoader可能不是您想要的。

你可以尝试直接实例韧劲:

RenjinScriptEngineFactory factory = new RenjinScriptEngineFactory(); 
RenjinScriptEngine engine = factory.getScriptEngine(); 

这也可能会给你更多的细节,如果确实有装载韧劲时遇到了错误。

+0

感谢这让我朝着正确的方向前进。得到这个工作在karaf 0.7.159后会尝试最新的0.8.X分支。解决方案在这里:https://gitlab.com/mkwyche/helpful-hints/tree/master/renjin-karaf – mkwyche

+0

太棒了!您链接的页面似乎不存在 - 您可以分享,以便我可以将其添加到我们的项目设置文档中? – akbertram

+0

下面是链接移动到github的链接:https://github.com/datadidit/helpful-hints/tree/master/renjin-karaf。本周将更新该自述文件中的文档。 – mkwyche