3天后…
我发现了问题!我需要做两件事,首先,一个MANIFEST.MF文件存在问题:
我在MANIFEST.MF中具有以下捆绑包:
Bundle-ClassPath: lib/jena.jar, ., org.apache.log4j-1.2.12.jar, lib/google-collect-snapshot.jarimport-Package: com.acme.client.translation, com.acme.translation.interfaces, com.acme.shared.osgi, com.acme.utilities
这 应该 一直这样的:
Bundle-ClassPath: lib/jena.jar, ., lib/google-collect-snapshot.jarimport-Package: com.acme.client.translation, com.acme.client.translation.interfaces, com.acme.shared.osgi, com.acme.utilities, org.apache.log4j
关键的不同之处在于,log4j应该作为软件包使用,而它却被用作软件包。(我从当我预期的Log4j“只是工作”使用OSGi在我的lib目录一个log4j的罐子。)的罐子
做
的工作,排序的。它显然找到了一些eclipse级的log4j配置,并加以利用。由于它只是一个罐子(不是捆绑包),因此它没有使用任何可以指定自定义日志记录配置的片段,这导致我们不得不进行另一件事:
我需要设置一个捆绑片段来指定日志记录配置。
此链接从VonC给我的信息,以做到这一点。不幸的是,这需要做很多事情,带有不正确MANIFEST.MF的程序包仍然在Bundle-
ClassPath中指定了log4j jar,并且似乎覆盖了import-Package列表。
我终于弄清楚了当我需要登录另一个捆绑软件时发生了什么(到此为止,我刚刚放弃了,回到了警告级别或更高级别使用日志。)这个新捆绑软件找不到日志配置。
!(因此,我在同一个OSGi环境中运行了三个捆绑软件,每个捆绑软件具有不同的log4j行为-
一个捆绑软件使用我的片段设置,另一个捆绑软件使用一些随机的Eclipse日志记录设置,最后是没有任何日志配置的新捆绑软件。)这三个捆绑软件的详细比较显示了Manifest.MF文件中的差异,现在它们都使用了片段捆绑软件。



