OSGI号码进口限制

use*_*433 7 java import osgi maven-bundle-plugin

我正在构建一个OSGI基础应用程序,在我的一个类中我执行了大量的导入(大约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...
Run Code Online (Sandbox Code Playgroud)

当我评论代码并减少进口数量一切顺利.

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

谢谢,

nnd*_*dru 11

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

因此,尝试将旧版本升级maven-bundle-plugin到最新版本.

希望能帮助到你.

  • 版本推广有效.目前的一个是3.2.0. (2认同)

Puc*_*uce 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>
Run Code Online (Sandbox Code Playgroud)