0

私は非常に奇妙な状況にあります。私は、それらを構築するためにtychoとmavenを使用しているEclipseプラグインプロジェクトのセットを持っています。プロジェクトの 1 つで JDBC ドライバーを使用しました。このプロジェクトをテストするためのテスト プラグインがあります。com.mysql.jdbc プラグインが eclipse p2 リポジトリーで利用できなかった (そして、独自の p2 がない) ため、jdbc プラグインをインポートして OSGi プラグインを作成し、ローカル プラグインに依存関係を追加しました。

私は複数のEclipseワークスペースを用意しています。テストと jdbc プラグインを作成した最初のワークスペースでのみ、eclipse run as -> Junit test コマンドを使用して実行すると、junit テストが機能します。他の人や私がソース コードをチェックアウトして、別のワークスペースでテストを実行しようとすると、次の例外がスローされます。

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

また、tycho 統合テスト (mvn integration-test を実行) を使用してみましたが、どちらも機能せず、同じ例外が発生します。私はこれをたくさん検索しようとしましたが、答えを見つけることができませんでした。

更新: ティコの問題ではないと思います。com.jdbc.mysql jar に基づいて Eclipse プラグインを作成しようとしました。これを作成したワークスペースは正常に動作しています。しかし、コードをコミットしてプロジェクトを別のワークスペースにインポートするとすぐに、テストが機能しなくなります。すべての設定は 2 つのワークスペース間で同じです。1 つが機能し、もう 1 つが ClassNotFound 例外を取得します!

4

2 に答える 2

0

Tycho は、テスト バンドルの推移的な依存関係に基づいて OSGi ランタイムを計算します。おそらく、mysql ドライバー バンドルに対する設計時の依存関係はありません (むしろ、それが実装する JDBC インターフェースにのみ依存します)。

mysql jdbc ドライバー バンドルにテスト ランタイム依存関係を追加してみてください。これを行う方法については、http://wiki.eclipse.org/Tycho/FAQ#How_to_add_a_undeclared_dependency.3F__.28e.g..2C_OSGi_declarative_service.29を参照してください。

于 2013-04-23T06:48:34.363 に答える