0

他のバンドルが依存できるようにしたいバンドルとして、いくつかのjarファイルをラップしようとしています。Spring dm Serverでは、これはjarファイルを新しいバンドルプロジェクトに追加し、すべてのクラスをエクスポートし、jarファイルがビルドパスとクラスパスにあることを確認するのと同じくらい簡単でした。

これが私がやろうとしていること(そして私が失敗しているところ)の単純で標準的な例です:

たとえば、Joda Timeを例にとると、これをバンドルにして、依存関係として共有できるようにします。まず、jarファイルを保持するバンドルを作成します。

  1. 新しいバンドルプロジェクトを作成するEclipse(Indigo Java EE)
  2. プロジェクトルートにフォルダ「lib」を作成します
  3. joda-time-1.6.1.jarを「lib」フォルダーに追加します
  4. lib/joda-time-1.6.1.jarをビルドパスに追加します
  5. src / META-INF / MANIFEST.MFを更新して、すべてのクラスをエクスポートします。

    マニフェスト-バージョン:1.0
    バンドルバージョン:1.0.0
    バンドル名:joda-time
    バンドル-マニフェストバージョン:2
    バンドル-SymbolicName:org.joda.time
    Bundle-ClassPath:lib / joda-time-1.6.1.jar、
     。
    エクスポート-パッケージ:org.joda.time、
     org.joda.time.base、
     org.joda.time.chrono、
     org.joda.time.convert、
     org.joda.time.field、
     org.joda.time.format、
     org.joda.time.tz
    

ここで、これを作成した新しいバンドルで使用します。

  1. Eclipse(Indigo Java EE)「MyDepTest」で新しいバンドルプロジェクトを作成します
  2. src / META-INF / MANIFEST.MFを編集して、org.joda.timeをインポートします。

    マニフェスト-バージョン:1.0
    バンドルバージョン:1.0.0
    バンドル名:MyDepTest
    バンドル-マニフェストバージョン:2
    バンドル-SymbolicName:com.foo.deptest
    インポートパッケージ:org.joda.time
    インポートバンドル:org.joda.time; version = "[1.0.0,1.0.0]"
    
  3. org.joda.timeバンドルをプロジェクト参照に追加して、Eclipseが依存関係を解決できるようにします

  4. クラスを書く:

    package com.foo.deptest;
    import org.joda.time.DateTime;
    public class SimpleDepTest {
        public SimpleDepTest (){
            DateTime dt = new DateTime();
        }
    }
    

これでorg.joda.time.DateTime解決するはずですが、Eclipseは次のエラーを示し、赤い下線が表示されますorg.joda

インポートorg.jodaを解決できません

どこが間違っているのですか?他のバンドルのクラスを使用できるように、jarをバンドルとしてラップするにはどうすればよいですか?

4

1 に答える 1

1

jarをクラスパスに追加するだけでは不十分であることがわかりました。また、それがビルドパスの一部であることを確認する必要があります。これは、ビルド構成ダイアログで行われます。

  1. 依存関係をエクスポートするプロジェクトを右クリックします
  2. 「プロパティ」を選択します
  3. 「Javaビルドパス」を選択します
  4. [注文とエクスポート]タブに移動します
  5. jarの横にあるチェックボックスがオンになっていることを確認します(これにより、jar自体がビルドパスに配置されるようになります)
于 2011-07-04T17:50:00.437 に答える