10

カスタムgeotoolsプラットフォームのコンパイル(実際にはOSGiベース)では、モジュールを個別にビルドしようとすると、モジュールの1つが正しくコンパイルされます。しかし、プロジェクト全体をビルドすると、compile特定のパッケージ/クラスが見つからないという理由でステージ上で失敗します。ただし、依存関係は問題なく解決されます。

モジュールのpom.xmlからの依存関係は次のとおりです。

<dependency>
   <groupId>org.picocontainer</groupId>
   <artifactId>com.springsource.org.picocontainer</artifactId>
   <version>1.2.0</version>
</dependency>

Mavenのビルドエラーの一部:

... \ geotools-osgi \ modules \ extension \ xsd \ xsd-core \ src \ main \ java \ org \ geotools \ xs \ bindings \ XSGroupBinding.java:[19,24]パッケージorg.picocontainerが存在しません

... \ geotools-osgi \ modules \ extension \ xsd \ xsd-core \ src \ main \ java \ org \ geotools \ xml \ AbstractComplexBinding.java:[20,24]パッケージorg.picocontainerが存在しません

... \ geotools-osgi \ modules \ extension \ xsd \ xsd-core \ src \ main \ java \ org \ geotools \ xml \ ComplexBinding.java:[21,24]パッケージorg.picocontainerが存在しません

pom.xmlの依存関係を変更すると、ある種の「バンドルを解決できません」で失敗します。

プロジェクトは本当に大きく、バンドルと子/親のpomの数です。そのため、ここにすべてを投稿することはできません。だから私の質問は:この種のトラブルの考えられる理由は何ですか?親/子間の依存関係の競合である可能性がありますか?

4

5 に答える 5

7

私はそれを解決しようとする2つのことを見ることができます。

まず、ローカルの.m2リポジトリにアクセスすると、ライブラリの他のバージョンがあるかどうかがわかります(ただし、バージョンが異なると名前が異なる場合があるため、別のフォルダーに保存されますが、役に立ちません)。

IDEまたはコマンドライン(mvndependency:tree)で使用されている実際の依存関係を確認することもできます。一貫性を保つために、推移的な依存関係を除外する必要がある場合があります。そのためにEclipseプラグインを使用します。

最後に、使用する依存関係が確認できたら、jarを開いて、そこに期待するものが存在するかどうかを確認できます。

于 2012-04-12T12:35:29.320 に答える
2

実際の理由は、ターゲットコンピューターのインターネットへのアクセスが制限されていたため、Mavenリポジトリへのアクセスが制限されていたためです。いくつかの黒魔術では、ある種の「アーティファクトをダウンロードできません」で失敗しませんでした(おそらくいくつかのjarファイルの手動インストールが原因です)。そこで、通常のアクセス権を持つサーバーを取得し、それをミラーとして設定し、ミラーを使用するようにMavenを構成しました。これにより、問題が解決しました。私の問題に参加してくれた@Samuelに感謝しますが、問題の説明から問題を特定することができなかったことがわかります。

于 2012-05-08T10:52:19.027 に答える
1

私も同じ問題を抱えていました。私の場合、モジュール内のすべてのクラスはテストパッケージ(Seleniumプロジェクト)にあり、依存関係はコンパイルするように設定されていました。結局、いくつかのクラスをメインパッケージに移動しました。

于 2018-08-08T10:13:23.527 に答える
0

私も同じ問題を抱えていました。私の問題は、依存関係がテストするように設定されていることでした。そのため、exec:javaを発行したとき、スコープ外であるため、クラスが見つかりませんでした。

于 2017-09-09T11:43:35.113 に答える
0

Eclipseでこの問題を解決しました。プロジェクト内の「maven依存関係」フォルダーを展開し、参照している特定のjarを見つけようとすると、この問題を見つけることができます。jarはフォルダーの形式で表示される場合がありますが、実際のjarとしては表示されません。参照されるプロジェクトである理由はEclipseプラットフォームで開かれているため、Mavenはそのjarをフェッチするためにリポジトリーを検索しません。

解決策は、参照されたjarのプロジェクトをEclipseソリューションスペースから削除して再構築することです。できます!

于 2020-02-23T04:45:33.100 に答える