无法解析包,因为filter:="(&(osgi.wiring.package=org.slf4j)(version>=2.0.0)(!(version>=3.0.0)))"

问题描述 投票:0回答:1

我正在尝试使用使用 Log4j2 v2.22.1 的应用程序运行 Karaf 4.4.3。然而,我得到了例外:

Caused by: org.apache.felix.resolver.reason.ReasonException: Unable to resolve com.my.bundle/4.1.0.SNAPSHOT: missing requirement [com.my.bundle/4.1.0.SNAPSHOT] osgi.wiring.package; filter:="(&(osgi.wiring.package=org.slf4j)(version>=2.0.0)(!(version>=3.0.0)))"

我已经检查过了。我在系统目录中有 pax-logging 库:

$ find . | grep pax-logging
./system/org/ops4j/pax/logging/pax-logging-log4j2
./system/org/ops4j/pax/logging/pax-logging-log4j2/2.2.0
./system/org/ops4j/pax/logging/pax-logging-log4j2/2.2.0/pax-logging-log4j2-2.2.0.jar
./system/org/ops4j/pax/logging/pax-logging-api
./system/org/ops4j/pax/logging/pax-logging-api/2.2.0
./system/org/ops4j/pax/logging/pax-logging-api/2.2.0/pax-logging-api-2.2.0.jar
./system/org/ops4j/pax/logging/pax-logging-logback
./system/org/ops4j/pax/logging/pax-logging-logback/2.2.0
./system/org/ops4j/pax/logging/pax-logging-logback/2.2.0/pax-logging-logback-2.2.0.jar

我的 etc/startup.properties 看起来不错,有 pax 日志记录条目:

mvn\:org.ops4j.pax.logging/pax-logging-api/2.2.0 = 8
mvn\:org.ops4j.pax.logging/pax-logging-log4j2/2.2.0 = 8

另外,我检查了 pax-logging github 页面上的兼容性表(https://github.com/ops4j/org.ops4j.pax.logging),似乎 pax-logging 2.2.0 与 log4j2 2.22.1 兼容.

我在stackoverflow上发现了类似的问题,但它对我没有帮助(karaf / filter:="(&(osgi.wiring.package=org.apache.logging.log4j)(version>=2.17.0)) .

我还错过了什么吗?

java log4j2 apache-karaf
1个回答
0
投票

我找到了解决方案,但很奇怪,如果有人能解释一下,那就太好了。

Karaf 4.4.3 原生的 Pax-logging 2.2.0 在其 MANIFEST 中导出 org.slf4j v1.8;但是,log4j2 2.22.1 需要 [2.0.0; 3.0.0)如 Karaf 日志中所述。看起来 log4j2 2.22.1 与 pax-logging 2.2.0 不兼容,但 github pax-logging 页面说它应该是。我将 pax-logging 从 2.2.0 更新到 2.2.6,它导出 org.slf4j 2.0.6,我可以启动 Karaf。也许,降级 log4j2 会更好。

© www.soinside.com 2019 - 2024. All rights reserved.