2

我目前正在尝试在 Equinox 中捆绑启动。

此捆绑包需要公共日志记录。

我尝试包含来自 Maven Central 的最新公共日志记录 jar。没运气。

然后我搬到了 slf4j。这是我在 OSGi 控制台中的当前状态:

11      ACTIVE      jcl.over.slf4j_1.6.6
12      ACTIVE      slf4j.api_1.6.6
                    Fragments=14
14      RESOLVED    slf4j.simple_1.6.6
                    Master=12

在日志中,我看到以下异常:

!ENTRY org.eclipse.osgi 4 0 2012-07-09 11:36:56.157
!MESSAGE Error starting bundle: initial@file:/C:/test/slf4j-simple-1.6.6.jar
!STACK 0
org.osgi.framework.BundleException: A fragment bundle cannot be started: slf4j.simple_1.6.6 [14]
    at org.eclipse.osgi.framework.internal.core.BundleFragment.startWorker(BundleFragment.java:224)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:300)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.startBundle(EclipseStarter.java:1119)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.startBundles(EclipseStarter.java:1112)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.loadBasicBundles(EclipseStarter.java:631)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.startup(EclipseStarter.java:277)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.main(EclipseStarter.java:151)

!ENTRY org.eclipse.osgi 4 0 2012-07-09 11:36:56.205
!MESSAGE Bundle slf4j.simple_1.6.6 [14] is not active.

在 Equinox 3.8 中启动和运行公共日志记录兼容包的最佳方法是什么?

4

2 回答 2

4

slf4j-simple是一个片段,片段无法启动。

你在你的 config.ini@start中最后列出了吗?只需删除它。

于 2012-07-09T11:11:15.363 回答
1

来自 OSGi 服务平台核心规范

A Fragment bundle must enter the resolved state only if it has been successfully
attached to its host bundle.

All class or resource loading of a fragment is handled through the host’s
class loader, a fragment must never have its own class loader. Fragment bundles
are treated as if they are an intrinsic part of their host.

很多时候,我们启动片段包,然后生成org.osgi.framework.BundleException: A fragment bundle cannot be started Exception.

根据规范,不需要启动片段包。这不是您的代码的问题。

于 2013-07-24T12:21:49.330 回答