maven-bundle-plugin失败,"无效的类文件module-info.class"

时间:2018-05-25 14:00:55

标签: java osgi java-9 maven-bundle-plugin

添加包含JPMS模块的依赖项后,maven-bundle-plugin(版本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)

该插件似乎尝试(并且失败)来分析module-info.class,这在OSGi上下文中应该是无关紧要的。

3 个答案:

答案 0 :(得分:10)

将捆绑包插件升级到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

答案 1 :(得分:1)

如果您使用的是IntelliJ,尽管由于以下原因您的maven配置是最新的,仍可能出现此问题: https://youtrack.jetbrains.com/issue/IDEA-194358

解决方法是关闭Osmorc插件

答案 2 :(得分:1)

我遇到了同样的问题。经过大量的游戏,我发现根本原因是uber-jar。 YMMV。