0

プロジェクト A がプロジェクト B の依存関係であるマルチモジュール プロジェクトがあります。

プロジェクト B の Junit テストを実行すると、プロジェクト A のクラスが正常にインポートされ、メソッドが呼び出されます。しかし、プロジェクト B に対して mvn clean install を実行すると、プロジェクト B の Activator.class の karaf-maven-plugin に対して ClassNotFoundException がスローされます。

プロジェクト org.project.b でゴール org.apache.karaf.tooling:karaf-maven-plugin:4.3.3:run (実行) を実行できませんでした: コンテナーを開始できません: コンテナーにプロジェクト成果物をデプロイできません: Activatorバンドル org.project.b の開始エラー [55]。org/project.a/core/Engine: org.project.a.Engine が org.project.b[55] で見つかりません -> [ヘルプ 1] org.apache.maven.lifecycle.LifecycleExecutionException: ゴール組織の実行に失敗しました。 apache.karaf.tooling:karaf-maven-plugin:4.3.3:プロジェクト org.project.b で実行 (実行): コンテナーを開始できません ... 原因: java.lang.ClassNotFoundException: org.project.a .Engine が org.project.b [55] で org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1565) で見つかりません org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java: 78) org.apache.felix.framework で。

Project の pom.xml は次のようになります。

<dependency>
        <groupId>org.project</groupId>
        <artifactId>org.project.a</artifactId>
        <version>4.0.0-SNAPSHOT</version>
</dependency>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.felix</groupId>
            <artifactId>maven-bundle-plugin</artifactId>
            <version>${maven-bundle-plugin.version}</version>
            <extensions>true</extensions>
            <configuration>
                <instructions>
                    <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
                    <Bundle-Version>${project.version}</Bundle-Version>
                    <Import-Package>*;resolution:=optional</Import-Package> 
                    <Export-Package>!${bundle.namespace}.*</Export-Package>
                    <Private-Package>${bundle.namespace}.*</Private-Package>
                    <Bundle-Activator>${bundle.namespace}.Activator</Bundle-Activator>
                </instructions>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.karaf.tooling</groupId>
            <artifactId>karaf-maven-plugin</artifactId>
            <version>${karaf.version}</version>
            <executions>
                <execution>
                    <id>run</id>
                    <phase>integration-test</phase>
                    <goals>
                        <goal>run</goal>
                    </goals>
                    <configuration>
                        <karafDistribution>mvn:org.apache.karaf/apache-karaf/${karaf.version}/zip</karafDistribution>
                        <keepRunning>true</keepRunning>
                        <deployProjectArtifact>true</deployProjectArtifact>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

プロジェクト B アクティベーター クラスのコード

import org.osgi.framework.BundleActivator;

org.osgi.framework.BundleContext をインポートします。org.project.a.Engine をインポートします。

public class Activator は BundleActivator を実装します {

@Override
public void start(BundleContext bundleContext) {
    System.out.println("Project B Bundle Running Successfully !!!!");
    org.project.a.Engine.printHello();
    System.out.println("Testing testing !!!!");

}

@Override
public void stop(BundleContext bundleContext) {
    // nothing to do
}
4

0 に答える 0