8

我正在构建一个 OSGI 基础应用程序,在我的一个课程中,我做了大量的导入(arround 30),当我启动应用程序时,我得到了这个异常:

java.lang.ArrayIndexOutOfBoundsException: 18
    at aQute.lib.osgi.Clazz.parseClassFile(Clazz.java:130)
    at aQute.lib.osgi.Clazz.<init>(Clazz.java:65)
    at aQute.lib.osgi.Processor.analyzeJar(Processor.java:159)
    at aQute.lib.osgi.Processor.analyzeBundleClasspath(Processor.java:77)
    at aQute.lib.osgi.Analyzer.analyze(Analyzer.java:194)
    at aQute.lib.osgi.Builder.analyze(Builder.java:95)
    at aQute.lib.osgi.Analyzer.calcManifest(Analyzer.java:293)
    at aQute.lib.osgi.Builder.build(Builder.java:45)
    at org.apache.felix.bundleplugin.BundlePlugin.buildOSGiBundle(BundlePlug...

当我评论代码并减少导入数量时,一切都很好。

这似乎是一个 OSGI 限制,我该如何解决这个问题?

谢谢,

4

3 回答 3

11

我在使用maven-bundle-pluginversion时遇到了同样的行为2.3.7。但是当我将版本升级到3.0.1它时它就会消失(我认为任何新版本也应该适合)。

因此,尝试将使用的版本升级maven-bundle-plugin到最新版本。

希望能帮助到你。

于 2016-04-19T13:10:24.277 回答
2

快速搜索显示以下问题:

https://issues.apache.org/jira/browse/FELIX-4556

https://issues.apache.org/jira/browse/FELIX-4005

我猜您出于某种原因正在经历其中之一。

根据 Stuart McCulloch 的说法,在下一个插件版本可用之前,作为一种解决方法,您可以升级项目中本地使用的 bnd 版本:

  <plugin>
    <groupId>org.apache.felix</groupId>
    <artifactId>maven-bundle-plugin</artifactId>
    <version>2.5.3</version>
    <dependencies>
      <dependency>
        <groupId>biz.aQute.bnd</groupId>
        <artifactId>bndlib</artifactId>
        <version>2.4.0</version>
      </dependency>
    </dependencies>
  <plugin>
于 2015-02-19T15:17:42.510 回答
0

我遇到了类似的问题,我通过将 maven-bundle-plugin 的版本升级到 3.0.1 来修复它。谢谢你

于 2019-03-14T22:09:23.663 回答