java - 如何查看 Apache Felix Log 中未满足 bundle 要求的原因?

标签 java osgi apache-felix gogo-shell

我在嵌入模式下使用 Felix,使用文件安装 bundle ,并且有一个已安装但未解析的 bundle (因此未启动/Activity ),并且我的挣扎比我想象的要多日志中的根本原因...

如何/在哪里获得那些有用的信息“无法解决...因为...”或“BundleException:捆绑中 Unresolved 约束...无法解决...缺少要求...osgi.wiring。日志中的“包”类型的消息,自动来自 Felix 框架和/或文件安装包?我没有看到这样的东西——我应该看到吗?哪里?

我还添加了日志记录(通过 Apache Felix Logosgi-loglistener-slf4j ),但仍然是虚无 - 您是否需要比我做更多的事情才能在(嵌入式)Felix 中启用此类问题的日志记录?

然后我添加了 Felix Gogo Shell CLI,发现它的 inspect 命令也不是很有帮助(对于未解析的包不起作用),并且仅 start 将显示根本原因 - 但如何才能将其记录下来,而无需使用控制台并启动:

g! lb  
START LEVEL 1
   ID|State      |Level|Name
    0|Active     |    0|System Bundle (5.6.1)|5.6.1
    1|Active     |    1|Apache Felix File Install (3.5.4)|3.5.4
    2|Active     |    1|Apache Felix Remote Shell (1.1.2)|1.1.2
    3|Active     |    1|Apache Felix Gogo Runtime (0.16.2)|0.16.2
    4|Active     |    1|Apache Felix Gogo Command (0.16.0)|0.16.0
    5|Active     |    1|Apache Felix Gogo Shell (0.12.0)|0.12.0
    6|Installed  |    1|osgi.testplugin (1.0.0.SNAPSHOT)|1.0.0.SNAPSHOT
g! inspect req * 6
Bundle 6 is not resolved.
g! start 6
org.osgi.framework.BundleException: Unable to resolve ch.vorburger.minecraft.osgi.testplugin [8](R 8.0): missing requirement [ch.vorburger.minecraft.osgi.testplugin [8](R 8.0)] osgi.wiring.package; (osgi.wiring.package=org.spongepowered.api.command) Unresolved requirements: [[ch.vorburger.minecraft.osgi.testplugin [8](R 8.0)] osgi.wiring.package; (osgi.wiring.package=org.spongepowered.api.command)]

我确实明白,由于 OSGi 的异步 bundle 初始化,何时记录失败的 bundle 启动可能并不明显,因为它可能必须等待依赖的 bundle 出现?在某种宽限期之后,它还不能记录这种错误吗?

最佳答案

在我找到 pax exam 选项来检查所有 bundle 是否已解决之前,我在测试中遇到了类似的问题。

我所做的是以编程方式浏览 bundle 列表,并对每个未启动的 bundle 调用启动。然后,bundle.start() 会抛出异常,原因与上面的控制台命令类似。

不确定 felix 是否可以设置为默认也记录此信息。

关于java - 如何查看 Apache Felix Log 中未满足 bundle 要求的原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41092687/

相关文章:

java - JDBC中使用的java中**Connection接口(interface)**的**prepareStatement**的实现在哪里?

java - 使用 Spring 和 Redis 的 Shedlock

java - 如何使用 Spring DM 在 AWT EventQueue 上创建 Swing OSGi 包

java - OSGI 包依赖

java - OSGi 声明式服务和 SonarQube

java - IntelliJ IDEA 无法设置 JDK

java - 如何在 Maven 中创建没有 meta-inf 文件夹的 jar?

java - OSGi/Equinox 类加载器使用意外的捆绑版本

java - OSGi 容器中的 RMI 客户端

Java 类转换异常,使用 javax xml 提供程序时出现类加载器错误?