2016-11-20 14 views
0

Неужели кому-то повезло загружать сценарии в Karaf. Я видел некоторые старые ссылки, касающиеся загрузки сценариев двигателей в 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

Но не было успеха до сих пор не загружается в 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: Renjin Script Engine не найден на пути к классам. на 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] по адресу 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

Загрузка ScriptEngine с помощью ScriptEngineManager может быть сложной, потому что ClassLoader, используемый ScriptEngineManager, возможно, не тот, который вы хотите.

Вы можете попробовать инстанцировании Renjin непосредственно:

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

Это также может дать вам более подробную информацию, если есть на самом деле ошибка, обнаруженная при загрузке Renjin.

+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. Будет обновление документов на этом readme на этой неделе. – mkwyche