4

依存関係の jar を追加したい OSGi 準拠のバンドル (jar) があります。追加したい依存関係は、データベース ドライバーです。その jar は、私が使用している Karaf コンテナーの lib フォルダーには存在せず、そこに手動で追加する方法はありません。バンドルをデプロイできる deploy フォルダーにしかアクセスできません。バンドルをパッケージ化するために Maven バンドル プラグインを使用しています。そのため、バンドルに依存関係の jar を追加する方法があるかどうかを知りたいと思いました。現在、7zip でバンドルを開き、jar にコピーして jar を追加することで、jar をバンドルに手動で追加していますが、正常に動作します。タグを使用してみまし<embed-dependency>たが、その後バンドルがデプロイされません。それを行う方法はありますか?

pom.xml以下は、バンドルに追加したい依存関係です。

    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <version>1.3.158</version>
    </dependency>

のビルド タグは次のとおりですpom.xml

<build>
    <defaultGoal>install</defaultGoal>
    <plugins>
        <plugin>
            <groupId>org.apache.felix</groupId>
            <artifactId>maven-bundle-plugin</artifactId>
            <extensions>true</extensions>
            <configuration>
                <instructions>
                    <Export-Package>
                        com.ct.service.userService.*,
                        org.h2.*
                    </Export-Package>
                    <Import-Package>
                        *,
                        org.codehaus.jackson.jaxrs
                    </Import-Package>
                    <Embed-Dependency>h2</Embed-Dependency>
                </instructions>
            </configuration>
        </plugin>
    </plugins>
</build>

デプロイしようとすると、次のエラーが表示されます。

ERROR: Bundle com.ge.dsp.userService [205] Error starting file:D:Karaf/deploy/userService-0.0.1-SNAPSHOT.jar (org.osgi.framework.BundleException: Unresolved constraint in bundle com.ge.dsp.userService [205]: Unable to resolve 205.2: missing requirement [205.2] osgi.wiring.package; (osgi.wiring.package=org.apache.lucene.analysis))

org.osgi.framework.BundleException: Unresolved constraint in bundle com.ct.service.userService [205]: Unable to resolve 205.2: missing requirement [205.2] osgi.wiring.package; (osgi.wiring.package=org.apache.lucene.analysis)
    at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:3826)
    at org.apache.felix.framework.Felix.startBundle(Felix.java:1868)
    at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1191)
    at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:295)
    at java.lang.Thread.run(Thread.java:662)
4

1 に答える 1