blueprint-maven-plugin 1.10.0 JDK11构建报错及兼容性咨询
问题根因
本次报错确实是blueprint-maven-plugin 1.10.0与JDK 11不兼容导致的,核心问题出在插件的依赖组件:
该版本插件底层依赖xbean-asm5-shaded库,其中ASM 5最高仅支持解析JDK 8的字节码,无法识别JDK 9及以上版本的字节码格式,因此读取JDK 11编译的类文件时直接抛出IllegalArgumentException,和你提供的报错堆栈完全匹配。
临时兼容方案
如果暂时需要继续使用该插件,可以通过强制升级插件的ASM相关依赖实现JDK 11兼容,修改项目pom.xml中该插件的配置,引入高版本ASM依赖并排除原有低版本依赖即可,示例配置如下:
<plugin> <groupId>org.apache.aries.blueprint</groupId> <artifactId>blueprint-maven-plugin</artifactId> <version>1.10.0</version> <dependencies> <!-- 替换为高版本支持JDK 11的ASM依赖 --> <dependency> <groupId>org.apache.xbean</groupId> <artifactId>xbean-asm9-shaded</artifactId> <version>4.22</version> </dependency> <dependency> <groupId>org.apache.xbean</groupId> <artifactId>xbean-finder-shaded</artifactId> <version>4.22</version> <exclusions> <exclusion> <groupId>org.apache.xbean</groupId> <artifactId>*</artifactId> </exclusion> </exclusions> </dependency> </dependencies> </plugin>
你可以根据实际环境调整依赖版本,只要保证ASM版本支持JDK 11即可正常运行。
长期替代方案
官方版本的blueprint-maven-plugin最后一次更新为2018年,已经停止维护多年,推荐采用以下长期替代方案:
- 手动编写blueprint配置文件,放弃插件自动生成功能,适合配置量较小的项目
- 迁移到OSGi Declarative Services(DS)方案,DS是目前OSGi生态主推的服务声明规范,原生支持高版本JDK,Karaf 4.2及以上版本均内置DS支持
- 选用社区第三方维护的适配了高版本JDK的
blueprint-maven-pluginfork版本,无需改动业务代码即可直接替换官方版本使用
内容的提问来源于stack exchange,提问作者peter.petrov
相关产品推荐
相关产品推荐

