spring-boot - OSGi Karaf Spring Boot 2.1.4-发布错误

标签 spring-boot osgi apache-karaf osgi-bundle maven-bundle-plugin

我正在尝试使用 Spring Boot 2.1.4 和 Java 8、OSGi 版本 5.0.0 和 Apache Karaf 4.1.3 构建 OSGi Karaf 应用程序。

我创建了以下 project in GitHub当我使用 Spring Boot 1.5.9 时,它构建并运行良好。

但是当我将 Spring 启动版本从 1.5.9-RELEASE 更改为 2.1.4-RELEASE 并尝试执行 mvn clean install 时然后我从 maven-bundle-plugin 中得到以下错误

[WARNING] Bundle com.nemesis:osgi-spring-boot-demo-bundle:bundle:0.0.1-SNAPSHOT : Export com.nemesis.osgi.springboot,  has 4,  private references [com.nemesis.osgi.springboot.controller, org.springframework.context.annotation, org.springframework.boot, org.springframework.boot.autoconfigure], 
[ERROR] Bundle com.nemesis:osgi-spring-boot-demo-bundle:bundle:0.0.1-SNAPSHOT : Exception: java.lang.ArrayIndexOutOfBoundsException: 19
[ERROR] Bundle com.nemesis:osgi-spring-boot-demo-bundle:bundle:0.0.1-SNAPSHOT : Invalid class file META-INF/versions/9/module-info.class (java.lang.ArrayIndexOutOfBoundsException: 19)
[ERROR] Bundle com.nemesis:osgi-spring-boot-demo-bundle:bundle:0.0.1-SNAPSHOT : Classes found in the wrong directory: {META-INF/versions/9/org/apache/logging/log4j/util/StackLocator.class=org.apache.logging.log4j.util.StackLocator, META-INF/versions/9/org/apache/logging/log4j/util/internal/DefaultObjectInputFilter.class=org.apache.logging.log4j.util.internal.DefaultObjectInputFilter, META-INF/versions/9/org/apache/logging/log4j/util/ProcessIdUtil.class=org.apache.logging.log4j.util.ProcessIdUtil}
[ERROR] Bundle com.nemesis:osgi-spring-boot-demo-bundle:bundle:0.0.1-SNAPSHOT : Exception: java.lang.ArrayIndexOutOfBoundsException: 19
[ERROR] Bundle com.nemesis:osgi-spring-boot-demo-bundle:bundle:0.0.1-SNAPSHOT : Invalid class file module-info.class (java.lang.ArrayIndexOutOfBoundsException: 19)
[ERROR] Bundle com.nemesis:osgi-spring-boot-demo-bundle:bundle:0.0.1-SNAPSHOT : Exception: java.lang.ArrayIndexOutOfBoundsException: 19
[ERROR] Bundle com.nemesis:osgi-spring-boot-demo-bundle:bundle:0.0.1-SNAPSHOT : Exception: java.lang.ArrayIndexOutOfBoundsException: 19
[ERROR] Bundle com.nemesis:osgi-spring-boot-demo-bundle:bundle:0.0.1-SNAPSHOT : Exception: java.lang.ArrayIndexOutOfBoundsException: 19

任何帮助深表感谢。

最佳答案

我认为错误是因为新的 spring 引导包或依赖项是 maven 包插件版本 3.3.0 尚无法处理的多版本 jar。
将 maven bundle 插件版本更新到 4.1.0 为我解决了这个问题。

See this PR .

关于spring-boot - OSGi Karaf Spring Boot 2.1.4-发布错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55828874/

相关文章:

Spring Security 在用户注销时从数据库中删除 session

java - 在 Spring 应用程序中添加 Apache Camel 自定义组件/端点

spring-boot - 如何使用Spring Boot “bootWar”插件创建gradle任务以产生爆炸 war ?

java - 未调用 OSGi 修改事件方法

java - ServiceBus JAVA SDK高级重新加载错误,ServiceLoader(不是子类型)

apache-camel - 为什么 Camel SCR 被弃用?

java - 将运行时参数传递给 OSGi felix scr 注释中的服务

java - 使用 Spring Boot 查询 MySQL 数据库时,SQL 查询返回未找到列 'id'

osgi - 如何从 karaf 中的 bundle 上下文获取 OSGI bundle 的名称

java - OSGi 即服务是否存在?