OpenLiberty 25.0.0.7启用microProfile-6.1启动失败(mpConfig冲突)的根因与解决方法
问题背景
使用Open Liberty 25.0.0.7版本,在server.xml中配置启用microProfile-6.1特性,配置内容如下:
<!-- server.xml --> <server description="new server"> <featureManager> <feature>microProfile-6.1</feature> </featureManager> </server>
服务器启动时控制台报错,错误信息如下:
# The failure Launching defaultServer (Open Liberty 25.0.0.7/wlp-1.0.103.cl250720250629-1102) on OpenJDK 64-Bit Server VM, version 21.0.7+6-LTS (en_US) [AUDIT ] CWWKE0001I: The server defaultServer has been launched. [INFO ] CWWKE0002I: The kernel started after 2.459 seconds [INFO ] CWWKF0007I: Feature update started. [ERROR ] CWWKF0033E: The singleton features mpConfig-3.1 and mpConfig-3.0 cannot be loaded at the same time. The configured features microProfile-6.1 and microProfile-6.1 include one or more features that cause the conflict. Your configuration is not supported; update server.xml to remove incompatible features. [INFO ] FFDC1015I: An FFDC Incident has been created: "java.lang.IllegalArgumentException: Unable to load conflicting versions of features "io.openliberty.mpConfig-3.1" and "io.openliberty.mpConfig-3.0". The feature dependency chains that led to the conflict are: io.openliberty.microProfile-6.1 -> io.openliberty.mpConfig-3.1 and io.openliberty.microProfile-6.1 -> io.openliberty.mpHealth-4.0 -> io.openliberty.mpHealth.4.0.ee-10.0 -> io.openliberty.mpHealth.4.0.ee.10.0.mp-6.0 -> io.openliberty.mpConfig-3.0 com.ibm.ws.kernel.feature.internal.FeatureManager reportErrors" at ffdc_25.08.01_11.03.36.0.log [WARNING ] CWWKF0046W: The configuration includes an incompatible combination of features. As a result, the feature manager did not install any features. [AUDIT ] CWWKF0012I: The server installed the following features: []. [AUDIT ] CWWKF0013I: The server removed the following features: [...]. [INFO ] CWWKF0008I: Feature update completed in 1.445 seconds. [AUDIT ] CWWKF0011I: The defaultServer server is ready to run a smarter planet. The defaultServer server started in 3.906 seconds.
尝试通过排除mpHealth-4.0特性解决,配置如下,服务器成功启动:
<!-- server.xml --> <server description="new server"> <featureManager> <feature>cdi-4.0</feature> <feature>jsonb-3.0</feature> <feature>jsonp-2.1</feature> <feature>mpConfig-3.1</feature> <feature>mpFaultTolerance-4.0</feature> <!--feature>mpHealth-4.0</feature--> <feature>mpJwt-2.1</feature> <feature>mpMetrics-5.1</feature> <feature>mpOpenAPI-3.1</feature> <feature>mpRestClient-3.0</feature> <feature>mpTelemetry-1.1</feature> </featureManager> </server>
问题咨询
- 该问题的根因是什么?
- 如何在不排除
mpHealth-4.0的情况下正确解决? - 这是否是25.0.0.7版本中的已知兼容性问题,还是遗漏了必要的配置步骤?
解答
1. 问题根因
从错误日志的依赖链可以明确:
microProfile-6.1直接依赖mpConfig-3.1;- 同时
microProfile-6.1依赖的mpHealth-4.0,其内部依赖链最终指向了旧版本的mpConfig-3.0;
Open Liberty中单例特性不允许同时加载不同版本,因此mpConfig-3.1和mpConfig-3.0的版本冲突导致启动失败。本质是25.0.0.7版本中mpHealth-4.0的依赖配置未正确适配microProfile-6.1所需的mpConfig-3.1。
2. 不排除mpHealth-4.0的解决方法
有两种可靠方案:
- 升级Open Liberty版本:后续发布的Open Liberty小版本(如25.0.0.8及之后)已修复该依赖冲突问题,升级后直接使用
microProfile-6.1特性即可正常加载所有依赖,包括mpHealth-4.0; - 手动指定适配的特性依赖:在
server.xml中显式声明mpConfig-3.1和mpHealth-4.0,并通过特性排除语法移除mpHealth-4.0对mpConfig-3.0的依赖,但这种方式需要熟悉Open Liberty的特性依赖规则,不如升级版本简单稳妥。
3. 是否为已知兼容性问题?
这是Open Liberty 25.0.0.7版本中的已知兼容性问题,并非遗漏配置步骤。该问题源于microProfile-6.1集成时,mpHealth-4.0的依赖链未同步更新到mpConfig-3.1,官方在后续小版本中已修复此问题。
内容的提问来源于stack exchange,提问作者Charlee Chitsuk
相关产品推荐
相关产品推荐

