qi4j на osgi не может загрузиться

Кому-нибудь удалось запустить qi4j в среде OSGi, такой как servicemix? Я пытался без успеха. Это постоянно говорит мне, что:

[Application(6)] The activate method has thrown an exception
org.qi4j.bootstrap.BootstrapException: Can not create Qi4j without a 
    Qi4j Runtime.
at org.qi4j.bootstrap.Energy4Java.<init>(Energy4Java.java:51)
at org.qi4j.bootstrap.Energy4Java.<init>(Energy4Java.java:44)
...

На консоли karaf выводится следующее:

Qi4j Runtime jar is not present in the classpath.

Я загружаю qi4j с помощью метода-активатора следующим образом (компонент apache scr):

@Activate
public void activate() {

    try {
        // Bootstrap Qi4j Runtime
        // Create a Qi4j Runtime
        qi4j = new Energy4Java();
        ...
    } ...

В pom.xml я определяю импорт:

<Import-Package>
    org.qi4j.runtime,
    org.qi4j.runtime.*,
    org.qi4j.api.activation,
    org.qi4j.bootstrap,
    org.slf4j, 
    *
</Import-Package>
<DynamicImport-Package>*</DynamicImport-Package>

Все пакеты разрешаются, включая среду выполнения, которую я развернул в servicemix 5.3.0 вместе с необходимыми зависимостями:

features:install scr
osgi:install wrap:mvn:org.codeartisans/org.json/20130213
osgi:install mvn:org.ow2.asm/asm-all/4.1
osgi:install mvn:org.qi4j.core/org.qi4j.core.api/2.0
osgi:install mvn:org.qi4j.core/org.qi4j.core.functional/2.0
osgi:install mvn:org.qi4j.core/org.qi4j.core.io/2.0
osgi:install mvn:org.qi4j.core/org.qi4j.core.spi/2.0
osgi:install mvn:org.qi4j.core/org.qi4j.core.bootstrap/2.0
osgi:install mvn:org.qi4j.core/org.qi4j.core.runtime/2.0

В чем подвох?

2 ответа

Решение

На самом деле я отладил процесс создания во время выполнения и обнаружил, что RuntimeFactory в начальной загрузке пытается загрузить org.qi4j.runtime.Qi4jRuntimeImpl, Очевидно, это исходит от org.q14j.runtime пакет, который не импортируется пакетом начальной загрузки.

Я создал фрагментный пакет для хоста org.qi4j.core.bootstrap;bundle-version=2.0.0 исправить импорт.

Это сделало работу.

Возможно, вы еще не начали связки. osgi:install устанавливает пакеты, но не запускает их. Пожалуйста, попробуйте это

features:install scr
osgi:install -s wrap:mvn:org.codeartisans/org.json/20130213
osgi:install -s mvn:org.ow2.asm/asm-all/4.1
osgi:install -s mvn:org.qi4j.core/org.qi4j.core.api/2.0
osgi:install -s mvn:org.qi4j.core/org.qi4j.core.functional/2.0
osgi:install -s mvn:org.qi4j.core/org.qi4j.core.io/2.0
osgi:install -s mvn:org.qi4j.core/org.qi4j.core.spi/2.0
osgi:install -s mvn:org.qi4j.core/org.qi4j.core.bootstrap/2.0
osgi:install -s mvn:org.qi4j.core/org.qi4j.core.runtime/2.0
Другие вопросы по тегам