OSGI编号进口限制



我正在构建一个基于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...

当我对代码进行注释并减少导入次数时,一切都很好。

这似乎是OSGI的限制,我该如何解决?

谢谢,

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

所以,请尝试将使用过的maven-bundle-plugin升级到最新版本。

希望能有所帮助。

快速搜索显示以下问题:

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>

我遇到了类似的问题,我通过将maven捆绑包插件的版本升级到3.0.1来解决它。谢谢你nndru

最新更新