0

スクリプト エンジンを Karaf に読み込むことができた人はいますか。スクリプト エンジンを OSGi コンテナーにロードすることに関する古いリンクをいくつか見ましOSGi は JSR-223 Scripting Language Discovery と根本的に互換性がない?

しかし、これまでカラフにロードする運がありませんでした. ここでやろうとしていることの簡単なサンプルプロジェクトがあります:

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: クラスパスに Renjin スクリプト エンジンが見つかりません。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] で sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.8.0_60] で java.lang.reflect.Method.invoke(Method.java:497)[: 1.8.0_60] org.apache.aries.blueprint.utils.ReflectionUtils.invoke(ReflectionUtils.java:299)[12:org.apache.aries.blueprint.core:1.6.2] org.apache.aries.blueprint .container.BeanRecipe.invoke(BeanRecipe.java:980)[12:org.apache.aries.blueprint.core:1.6.2] org.apache.aries.

バンドル、動的インポートなどを埋め込んでみました...どんな提案でも大歓迎です。

ありがとう。

4

1 に答える 1

1

ScriptEngineManager によって使用される ClassLoader が必要なものではない可能性があるため、ScriptEngineManager を介した ScriptEngine のロードは複雑になる可能性があります。

Renjin を直接インスタンス化してみることができます:

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

これにより、Renjin の読み込み中に実際にエラーが発生した場合に、より詳細な情報が得られる場合もあります。

于 2016-11-21T06:07:21.000 に答える