osgi 上的 qi4j 无法 bootstrap
qi4j on osgi fails to bootstrap
有没有人设法在 servicemix 等 OSGi 环境中获得 qi4j 运行?我尝试没有成功。它不断地告诉我:
[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
有什么诀窍?
可能您还没有启动捆绑包。 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
实际上我调试了运行时创建过程,发现 bootstrap 包中的 RuntimeFactory
试图加载 org.qi4j.runtime.Qi4jRuntimeImpl
。显然这来自 org.q14j.runtime
包,它不是 导入的 bootstrap 包。
我为主机 org.qi4j.core.bootstrap;bundle-version=2.0.0
创建了一个片段包来修复导入。
这完成了工作。
有没有人设法在 servicemix 等 OSGi 环境中获得 qi4j 运行?我尝试没有成功。它不断地告诉我:
[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
有什么诀窍?
可能您还没有启动捆绑包。 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
实际上我调试了运行时创建过程,发现 bootstrap 包中的 RuntimeFactory
试图加载 org.qi4j.runtime.Qi4jRuntimeImpl
。显然这来自 org.q14j.runtime
包,它不是 导入的 bootstrap 包。
我为主机 org.qi4j.core.bootstrap;bundle-version=2.0.0
创建了一个片段包来修复导入。
这完成了工作。