Eclipse 用の Git プラグイン (「Egit」) があることは知っていますが、コマンド ラインで Git を行うのが好きで、Eclipse でコーディングするのが好きなので、それらを分けておきたいと考えています。
Git リポジトリのクローンを作成しました (これは重要ではないと思いますが、参考までにhttps://github.com/spinscale/dropwizard-jobs.git
)。次に、Eclipse (Juno) を開いて新しい Java プロジェクトを作成し、複製したリポジトリのルートをプロジェクトのベース パスとして選択しました。プロジェクトを Java ファセットに関連付けるかどうかを Eclipse が尋ねてきたので、[OK] をクリックしました。
このプロジェクトには大きな依存関係ツリーがあります (必要に応じて、4 つの POM ファイルを確認してください)。私はビルドに Maven を使用していない (Gradle を使用している) ため、これらの POM の依存関係をディレクトリに解決するスクリプトを実行し、lib
この Eclipse プロジェクトにディレクトリを作成し、すべての JAR をそこにコピーしました。次に、これらすべての JAR をプロジェクトのクラスパスに追加しました。
現在、Eclipse の [問題] ビューに10 個のエラーが表示されていますが、これらはすべて同様のエラーです。
- タイプ ApplicationStartTestJob はすでに定義されています ApplicationStartTestJob.java /dropwizard-jobs/dropwizard-jobs-core/src/test/java/de/spinscale/dropwizard/jobs 行 10 Java 問題
- タイプ ApplicationStartTestJob は既に定義されています ApplicationStartTestJob.java /dropwizard-jobs/dropwizard-jobs-guice/src/test/java/de/spinscale/dropwizard/jobs 行 10 Java 問題
- さらに8つすべてこのようなものなど
案の定、プロジェクト全体を展開すると、次の構造になっていることがわかります。
dropwizard-jobs/
dropwizard-jobs-core/
src/test/java/
de.spinscale.dropwizard.jobs
ApplicationStartTestJob.java
dropwizard-jobs-guice
src/test/java/
de.spinscale.dropwizard.jobs
ApplicationStartTestJob.java
dropwizard-jobs-spring
src/test/java/
de.spinscale.dropwizard.jobs
ApplicationStartTestJob.java
したがって、このプロジェクトのメンテナーは、ユニット テストの名前をまったく同じパッケージ/クラス名に変更したいと考えているようです。何らかの理由で、Eclipse はそれらをすべて同じパッケージ内に属していると見なします。これをテストするために、名前を別の名前に変更dropwizard-jobs-core/src/main/java/de.spinscale.dropwizard.jobs.ApplicationStartTest
し、同じことを行って、確かに、既に定義されていることにdropwizard-jobs-guice/src/main/java/de.spinscale.dropwizard.jobs.ApplicationStartTest
関連するすべてのエラーがなくなりました。ApplicationStartTest
したがって、私の疑いが確認されました。これらのサブフォルダー ( 、および)の意図は、それらが別個のクラスパスを持つサブプロジェクトであることです。Eclipse は、これらすべてのソース フォルダーが同じプロジェクトの一部であると見なし、すべてのクラスを同じクラスパスにまとめています。各サブプロジェクトは同じ単体テスト命名規則 (各サブプロジェクトに同じパッケージ/クラス名) を使用するため、Eclipse は同じパッケージ内の複数のクラスを同じ名前を持つものとして認識します。dropwizard-jobs-core
dropwizard-jobs-guice
dropwizard-jobs-spring
いいよ!私は問題を理解しました。しかし、解決策は何ですか?理想的には、これらすべてを同じプロジェクト内に保持できますが、おそらく.classpath
ファイルを変更するか、クラスパスの観点からサブプロジェクトを分離しておくように Eclipse に指示する同様のことを行います。何か案は?