2

私は2つのプロジェクトを持っていMainますCore. 私はcom.package.Sample(その内容とともに)と呼ばれるパッケージとSample、パッケージで呼び出されるクラスを持っていますcom.package。両方を に含めるとMain、1 つが解決できないというエラーが発生します。私の実際のケースでは、Sample解決できなかったのはクラスでした。ビルドして常に機能する ant スクリプトがあります。

ただし、各プロジェクトに何が必要かを注意深く調べたところ、パッケージcom.package.SampleCoreにある依存関係と共に に移動できることに気付きましたMainSampleクラスは厳密には内部に属していたMainので、移動しませんでした。これにより、Eclipse 内で正常にビルドできました。

私が疑問に思っていることがいくつかあります:

  • これは大規模なプロジェクトではよくあることですか?
  • この種の状況に最適なアプローチは何ですか? 競合を調査する前に、最善の解決策はSampleクラスをリファクタリングすることだと考えました。
  • ただし、パッケージを から移動できませんでしcom.package.SampleMain。私は何をすべきか?それとも、これは決して構築されないというケースですか?
4

2 に答える 2

5

それぞれあなたの弾丸に答えるには:

  • これが大規模なプロジェクトで一般的かどうかはわかりませんが、そうではないと思います。コードベースが名前の競合を引き起こすように設計されている場合(特にJavaでは、このような問題の解決が容易になるため)、大規模なプロジェクトはおそらく大きくなることはありません。
  • 名前が適切に説明的である場合、Sampleクラスをリファクタリングしません。ただし、パッケージ(およびサブパッケージ)にはすべて小文字で名前を付けます。あなたはこれが小さなプロジェクトだとほのめかしたので、あなたがネーミングをコントロールできると思います。パッケージ名に大文字を使用したJavaコード(商用またはオープンソース)を思い出してみたことがありません。Javaの規則では、Pascalケース、キャメルケース、またはそれを呼び出したいものを使用するため、その規則に従うと、クラス/パッケージ名の競合が発生することはありません。
  • もちろん構築されます。かなり簡単な修正。Eclipseを使用しているので、エクスプローラーでパッケージを右クリックし、「リファクタリング」を選択し、名前を小文字に変更すれば、ほぼ完了です。

幸運を!

于 2011-08-31T00:14:43.283 に答える
4

パッケージ名はすべて小文字にする必要があり、クラス名は大文字で始める必要があります。この慣行に従うことで、あなたが説明したような問題は決して発生しません。

于 2011-08-31T00:24:11.217 に答える