maven-bundle-plugin 失败,并显示“无效的类文件 module-info.class”

2022-09-03 17:59:00

添加包含 JPMS 模块的依赖项后,maven 捆绑包插件(版本 3.3.0)失败,出现:

[INFO] --- maven-bundle-plugin:3.3.0:bundle (default-bundle) @ my-bundle ---
[ERROR] Bundle myGroup:my-bundle:bundle:1.0 : 
        Exception: java.lang.ArrayIndexOutOfBoundsException: 19
[ERROR] Bundle myGroup:my-bundle:bundle:1.0 : 
        Invalid class file module-info.class (java.lang.ArrayIndexOutOfBoundsException: 19)

似乎插件尝试(但失败了)分析模块信息.class,这在OSGi上下文中应该是无关紧要的。


答案 1

将捆绑包插件升级到版本 3.5.0 解决了以下问题:

<plugin>
  <groupId>org.apache.felix</groupId>
  <artifactId>maven-bundle-plugin</artifactId>
  <version>3.5.0</version>
</plugin>

我还必须将maven升级到3.5,因为最新版本的插件在maven 3.3上抛出了NPE:

Failed to execute goal org.apache.felix:maven-bundle-plugin:3.5.0:bundle (default-bundle) on project my-bundle: Execution default-bundle of goal org.apache.felix:maven-bundle-plugin:3.5.0:bundle failed. NullPointerException

另见 FELIX-5698

更新:请在 maven central 上查看捆绑包插件的最新版本。最新版本的maven可以在他们的下载页面上找到。


答案 2

如果您使用的是 IntelliJ,则尽管您的 maven 配置是最新的,但仍可能会出现此问题:https://youtrack.jetbrains.com/issue/IDEA-194358

解决方法是关闭Osmorc插件


推荐