OSGI 编号进口限制

Posted

技术标签:

【中文标题】OSGI 编号进口限制【英文标题】:OSGI number imports restriction 【发布时间】:2015-04-20 20:34:11 【问题描述】:

我正在构建一个 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 限制,我该如何解决这个问题?

谢谢,

【问题讨论】:

【参考方案1】:

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

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

希望对您有所帮助。

【讨论】:

我希望我能多次支持这个答案,但我不能。我也希望我能代表原始海报 (@user1828433) 将其标记为正确答案,但我不能。【参考方案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>

【讨论】:

【参考方案3】:

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

【讨论】:

以上是关于OSGI 编号进口限制的主要内容,如果未能解决你的问题,请参考以下文章

一种排序

nyoj 8一种排序

0081-开关灯

一种排序(nyoj8)(简单排序)

CCF 201909-4 推荐系统

CSP-201412