【问题标题】:Errors in Karaf upgrade from 4.2.0.M1 to 4.2.0.M2Karaf 从 4.2.0.M1 升级到 4.2.0.M2 出现错误
【发布时间】:2021-02-12 09:16:38
【问题描述】:

我们正在升级 Karaf,在从 4.2.0.M1 过渡到 4.2.0.M2 的过程中,我们注意到几个与 BootFeatures 相关的错误:

2021-02-04T15:43:17,674 | ERROR | activator-1-thread-2 | BootFeaturesInstaller            | 11 - org.apache.karaf.features.core - 4.2.1 | Error installing boot features
org.apache.felix.resolver.reason.ReasonException: Unable to resolve root: missing requirement [root] osgi.identity; osgi.identity=ssh; type=karaf.feature; version="[4.3.1.SNAPSHOT,4.3.1.SNAPSHOT]"; filter:="(&(osgi.identity=ssh)(type=karaf.feature)(version>=4.3.1.SNAPSHOT)(version<=4.3.1.SNAPSHOT))" [caused by: Unable to resolve ssh/4.3.1.SNAPSHOT: missing requirement [ssh/4.3.1.SNAPSHOT] osgi.identity; osgi.identity=org.apache.karaf.shell.ssh; type=osgi.bundle; version="[4.3.1.SNAPSHOT,4.3.1.SNAPSHOT]"; resolution:=mandatory [caused by: Unable to resolve org.apache.karaf.shell.ssh/4.3.1.SNAPSHOT: missing requirement [org.apache.karaf.shell.ssh/4.3.1.SNAPSHOT] osgi.wiring.package; filter:="(&(osgi.wiring.package=org.apache.karaf.jaas.boot.principal)(version>=4.3.0)(!(version>=5.0.0)))" [caused by: Unable to resolve org.apache.karaf.jaas.boot/4.3.1.SNAPSHOT: missing requirement [org.apache.karaf.jaas.boot/4.3.1.SNAPSHOT] osgi.wiring.package; filter:="(&(osgi.wiring.package=org.osgi.framework)(version>=1.9.0)(!(version>=2.0.0)))"]]]

尽管每次给出错误的功能名称都不同(例如 kar 和 ssh),但错误总是看起来相似,因此似乎所有 BootFeatures 都失败了,随机一个只是首先显示错误。在管理 Karaf 功能的方式上,似乎从 4.2.0.M1 到 4.2.0.M2 发生了一些变化。

我们使用 Java 8 和 OSGi 6。除此之外,我们使用 Gradle 作为构建系统并使用 Aether 库 (org.ops4j.pax.url.mvn) 来处理 Maven 工件/包解析。

这是我们的 org.apache.karaf.features.cfg 文件的内容:

featuresRepositories = \
    mvn:org.apache.karaf.features/framework/4.2.0.M2/xml/features, \
    mvn:org.apache.karaf.features/spring/4.2.0.M2/xml/features, \
    mvn:org.apache.karaf.features/standard/4.2.0.M2/xml/features, \
    mvn:org.apache.karaf.features/enterprise/4.2.0.M2/xml/features, \
    mvn:org.apache.activemq/activemq-karaf/5.16.1/xml/features, \
    mvn:org.apache.cxf.karaf/apache-cxf/3.2.7/xml/features, \
    mvn:org.apache.cxf.dosgi/cxf-dosgi/2.3.0/xml/features, \
    mvn:org.ops4j.pax.jdbc/pax-jdbc-features/1.4.5/xml/features, \
    file:/opt/data/features/feature.xml

featuresBoot = \
    (instance, \
    package, \
    log, \
    ssh, \
    aries-blueprint, \
    framework, \
    system, \
    eventadmin, \
    feature, \
    shell, \
    management, \
    service, \
    jaas, \
    shell-compat, \
    deployer, \
    diagnostic, \
    wrap, \
    bundle, \
    config, \
    kar, \
    jndi, \
    jdbc, \
    transaction, \
    pax-jdbc-config, \
    pax-jdbc-pool-common, \
    pax-jdbc-postgresql, \
    pax-jdbc-pool-c3p0, \
    cxf-core, \
    cxf-jaxrs, \
    cxf-jaxws, \
    cxf-dosgi-provider-rs, \
    cxf-dosgi-provider-ws, \
    activemq-broker-noweb), \
    (local_bundle_1, ..., local_bundle_N)

featuresBootAsynchronous=false

有人知道从 4.2.0.M1 升级到 4.2.0.M2 后这些错误的原因是什么吗?

提前致谢

【问题讨论】:

    标签: osgi apache-karaf


    【解决方案1】:

    Karaf 正在为您解析最新版本的 ssh 功能。要更正,请为日志中显示的版本添加黑名单条目

    文件:etc/org.apache.karaf.features.xml

    <blacklistedRepositories>
        ...
        <repository>mvn:org.apache.karaf.features/standard/4.3.1-SNAPSHOT/xml/features</repository>  
        ...
    </blacklistedRepositories>
    

    【讨论】:

    • 您好,感谢您的回答。我忘了在我们的 org.apache.karaf.features.cfg 文件中添加,我们还有 featuresRepositories 引用 4.2.0.M2,例如: featuresRepositories = \ ... mvn:org.apache.karaf.features/standard/4.2 .0.M2/xml/features, \ ... 不幸的是,将带有 4.3.1-SNAPSHOT 的条目添加到 blacklistedRepositories 并没有修复错误(或更改它)。
    • 为了更新之前的回复,我们找到了 org.apache.karaf.features.xml 文件,并在其中添加了 blacklistedRepositories 条目,以及 org.apache.karaf 中的 featureProcessing=org.apache.karaf.features.xml 行.features.cfg 文件,但我们仍然遇到同样的错误。
    • 您不应将 Karaf 功能版本与运行时版本混用。这些功能本质上就是让 karaf 启动的原因。
    • @MattPavlovich 抱歉,混合 Karaf“运行时版本的功能版本”是什么意思?我们在 .cfg 文件中定义了要引导的功能 (featuresBoot) 和具有相同版本的存储库 (featuresRepositories) —— 只是按照建议添加了一个新的 .xml 文件以阻止特定存储库。有什么明显的我们做错了吗?我们正在扫描所有 Karaf 文档,但无法再次加载该文档——升级到 4.2.4 或 4.2.9 会产生其他错误(osgi.ee == 9.0),即使使用 Apache Karaf 官方 Docker 映像和配置也是如此。
    猜你喜欢
    • 2021-08-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-27
    • 2015-03-07
    • 2018-12-27
    • 1970-01-01
    • 2017-10-08
    • 2019-01-14
    相关资源
    最近更新 更多