有没有人设法让 qi4j 在像 servicemix 这样的 OSGi 环境中运行?我试过没有成功。它不断地告诉我:
[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
有什么诀窍?