2

登録/登録解除をリッスンし、stdoutにメッセージを送信する非常にシンプルなOSGIアプリがあります。

私のアプリにあるのは、Springで初期化された単純なBeanです。私はmavenバンドルプラグインを使用してjarをバンドルし、felixに入れます。これはpomの抜粋です:

<dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>3.1.0.RELEASE</version>
        <type>jar</type>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.felix</groupId>
            <artifactId>maven-bundle-plugin</artifactId>
            <version>2.2.0</version>
            <extensions>true</extensions>
            <configuration>
                <instructions>
                    <Export-Package>org.spring.*</Export-Package>
                    <Bundle-Activator>foo.bar.Activator</Bundle-Activator>
                </instructions>
            </configuration>
        </plugin>
    </plugins>
</build>

プロジェクトは正常にコンパイルされ、Felixに正常にデプロイできますが、アクティベーターが呼び出されると、次のような依存関係が欠落していると文句を言います。

バンドルfoo.bar.projectの未解決の制約[56]:56.0を解決できません:要件がありません[56.0] osgi.wiring.package; (&(osgi.wiring.package = org.springframework.context)(version> = 3.1.0)(!(version> = 4.0.0)))

私はこの行を変更してみました:

org.spring。*

これに:

*

フェリックスがandroid-dalvikが存在しないと不平を言っているので、私は完全に無知です。

Spring DMを使用せずにSpringをOSGIプロジェクトに含める方法はありますか?

編集:生成されたマニフェストが(Webコンソールから)不平を言うものは次のとおりです

エクスポートされたパッケージ

foo.bar.osgi foo.bar.service foobar.tracker

インポートされたパッケージorg.osgi.framework、version = [1.6,2)from org.apache.felix.framework(0)org.osgi.util.tracker、version = [1.5,2)from org.apache.felix.framework( 0)エラー:org.springframework.context、version = [3.1,4)-解決できませんエラー:org.springframework.context.support、version = [3.1,4)-解決できません

マニフェストヘッダーBnd-LastModified:1339014840268

Build-Jdk:1.6.0_32

作成者:fooBar

バンドル-アクティベーター:foo.bar.osgi.Activator

バンドル-マニフェストバージョン:2

バンドル名:fooBar

バンドル-SymbolicName:foo.bar.OSGIProject

バンドルバージョン:0.20.0.SNAPSHOT

作成者:ApacheMavenバンドルプラグイン

エクスポート-パッケージ:foo.bar.osgi.tracker; 使用:= "foo.bar.osgi.service、org.osgi.util.tracker、org.osgi.framework"、

foo.bar.osgi; 使用:= "org.springframework.context.support、org.springframework.context、org.osgi.framework"、foo.bar.osgi.service

インポートパッケージ:

org.osgi.framework; version = "[1.6、2)"、org.osgi.util.tracker; version = "[1.5、2)"、org.springframework.context; version = "[3.1、4)"、org.springframework.context.support; version = "[3.1、4)"マニフェスト-バージョン:1.0ツール:Bnd-1.15.0

これは私がpomに変わったときです

<configuration>
    <instructions>
        <Include-Resource>src/main/resources/spring-beans.xml</Include-Resource>
        <Bundle-Activator>nl.synovite.scheduled.osgi.Activator</Bundle-Activator>
        <Import-Package>*</Import-Package>></instructions>
</configuration>
4

2 に答える 2

1

バンドルは基本的には問題ないと思いますが、Felixはorg.springframeworkパッケージを解決できないようです。そのため、org.springframeworkパッケージをエクスポートするバンドルを追加する必要があります。Springについてはよくわかりませんが、springsourceからこれらのバンドルをダウンロードできると思います。

Mavenは、コンパイルできるように見えたので、1つも見つけたに違いありません。

于 2012-06-07T10:03:59.943 に答える
1

あなたがやっている

<Export-Package>org.spring.*</Export-Package>

しかし、関心のあるパッケージはですorg.springframework.context。エクスポート構文はパターンであり、完全な正規表現ではないため、エクスポート内のドットは実際にはドット(つまり、パッケージ区切り文字)を意味し、任意の文字ではありません。

<Export-Package>org.spring*</Export-Package>

あなたがやりたいことをする必要があります。

于 2012-06-07T11:16:28.390 に答える