8

私はOSGIベースアプリケーションを構築しています。私のクラスの1つで、重要な数のインポート(約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 に答える