1

依存関係の解決が正しくないため、tycho を使用してテストを実行する際に問題が発生しています。これは、どういうわけか、古い Google Collections .jar を Guava ではなくクラスパスに配置しているにもかかわらず、私の pom のどの時点でもコレクションへの依存関係を指定します (グアバのみ)。

私の単体テストは、NoSuchMethodError (ImmutableList.copyOf)、NoClassDefFoundError (Joiner) などの原因で失敗します。これらは、「間違った jar を見つける」にかなり絞り込まれました。これらの同じテストは、Eclipse で手動で実行すると合格します。

ポンポンの関連部分は次のとおりです。

<dependencies>
    <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>14.0.1</version>
    </dependency>
  ...
</dependencies>

「google collections」というフレーズはどこにも表示されません。私が指定する唯一の他のリポジトリは次のとおりです。

<repositories>
    <repository>
        <id>helios</id>
        <layout>p2</layout>
        <url>http://download.eclipse.org/releases/helios</url>
    </repository>
</repositories>

私のプラグインは、インポートされたパッケージとして「com.google.common.base」と「com.google.common.collect」をインポートします。デバッグ用にワークスペースに Guava 14 の独自のバンドル バージョンがありますが、POM ではローカル モジュールを使用しないことにしました。

この質問に対するショーン・パトリック・フロイドの回答 ( JUnit throws java.lang.NoSuchMethodError For com.google.common.collect.Iterables.tryFind ) に従い、テストで Iterables クラスがあった .jar の場所で例外をスローしました。からロードされます。それは吐き返しました:

java.lang.IllegalArgumentException: file:/C:/Documents and Settings/Erika Redmark/.m2/repository/p2/osgi/bundle/com.google.collect/0.8.0.v201102150722/com.google.collect-0.8.0.v201102150722.jar

これが私が今立ち往生しているところです。この google-collections jar はどこからともなく発生しているように見えますが、それを止める方法がわかりません。問題が解決されている限り、単体テストは失敗します。Tycho が古い Google コレクションを取得しようとするのを止めるにはどうすればよいですか?

明確にするために、これはビルドと展開を停止していません。プラグイン更新サイトは CI プラットフォーム上にあり、さまざまな Eclipse IDE にプラグインをインストールできたので、この問題はテストにのみ影響します。

追加情報が必要な場合はお知らせください。

4

2 に答える 2