2016-11-20 60 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