我正在构建一个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限制,我该如何解决这个问题?
谢谢,
答案 0 :(得分:8)
当我使用版本maven-bundle-plugin
的{{1}}时,我遇到了相同的行为。但是当我将版本升级到2.3.7
时,它就会消失(我认为任何新版本都应该适合)。
因此,请尝试将已使用的3.0.1
版本升级到最新版本。
希望它有所帮助。
答案 1 :(得分: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>
答案 2 :(得分:0)
我有一个类似的问题,我通过将maven-bundle-plugin的版本升级到3.0.1来解决。 谢谢nndru