0

私は、Eclipse プラグインに基づく RCP アプリケーションに取り組んでいます。私のプラグイン プロジェクトの 1 つで、別のプラグイン プロジェクトを依存関係として追加します。プロジェクト A に、そのマニフェストで定義された依存関係としてプロジェクト B があるとします。プロジェクト B には、参照ライブラリとして jackcess.jar ファイルが含まれています。

Project BI には、Mirror.java というクラスがあります。

 public Mirror(String source, String template, String target) throws SQLException, IOException {
    this.sourceString=source;
    this.templateFileString=template;
    this.targetFileString=target;
}

クラスMirrorのオブジェクトを作成しようとすると、プロジェクトAの内部

 Mirror  m = new Mirror(connectionString, "EABase_JET4_empty.eap",platformDB.getAbsolutePath());

次のエラーが表示されます

java.lang.NoClassDefFoundError: com/healthmarketscience/jackcess/ImportFilter

プロジェクト B の build.properties (jackcess.jar を含む)

bin.includes = META-INF/,\
           src/main/resources/lib/jackcess-1.2.6.af3.jar

マニフェスト.MF

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: MirrorDbToEap
Bundle-SymbolicName: MirrorDbToEap
Bundle-Version: 1.0.0
Export-Package: .,
 com.example.jetdb.mirror
 Require-Bundle: CommonsIo;bundle-version="2.0.0",
 org.apache.commons.lang;bundle-version="2.6.0",
 org.apache.commons.logging;bundle-version="1.0.4"

画像 ここで何がうまくいかないのか知っている人はいますか?

ありがとう

4

2 に答える 2

1

build.properties ファイルの bin.includes に jackcess.jar を含めていないため、RCP ビルドには含まれていません。

build.properties エディタを開き、「バイナリ ビルド」選択で jar を選択します。

jar はBundle-ClassPath、MANIFEST.MF の にも表示される必要があります。ランタイム タブのマニフェスト エディターで、jar を「クラスパス」セクションに追加します (通常のプラグイン コードには「.」も必要です)。

于 2015-04-22T10:26:36.363 に答える