2013-04-12 14 views
5

SOにはいくつかの質問がありますが、私はJava開発には全く新しいので、これに近づける正しい方法はわかりません。Javaでは、新しいパッケージ、フォルダ、またはソースフォルダを作成する必要がありますか?

私は2つのプロジェクト(私のアプリと単体テストプロジェクト)を含むC#ソリューションを持っており、アプリ内ではほとんどのものがフォルダに入れられます。インターフェイス、例外など

私はJava/Eclipseでこれを再作成しようとしていますが、どうすればよいか分かりません。私は多くのパッケージで終わった。私はまた、ソースフォルダを追加しようとしたが、それはパッケージの外になった。

誰かが正しい方向に向いていますか?

つまり、単体テストプロジェクト/ユニットテストのセットを表すために使用するものと、単なる単体テスト用のサブフォルダです。

編集:デフォルトのパッケージの使用は推奨されていません。私は何をしなければならないのですか?

編集2:これは次のようなものです。これは曖昧に見えますか?オリジナルのC#ソリューションが右側にあります。 Javaのソースツリー構造で

My Layout

+0

パッケージがたくさんあることは間違いありません。それらのパッケージが賢明ならば。 –

+0

http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html例えば – user1516873

答えて

2

典型的なJava eclipseプロジェクトでは、1つ以上のソースフォルダがあります(たとえば、アプリケーションコード用、ユニットテスト用など)。

各フォルダにはパッケージツリーが含まれています。通常はベースパッケージで始まります(例:com.mycompany.myapp)。

名前の衝突を避けるために、パッケージ名は通常、コードの作成者であるエンティティのドメイン名で始まり、最上位ドメインから始まり後方に向かっています(より一般的なものからより具体的なものへ)。そうすれば、各クラスの完全修飾名は一意です。たとえば、GoogleがListという名前のクラスを作成した場合、それはcom.google.Listと呼ばれ、既存のjava.util.Listインターフェイスと競合することはありません。

あなたは、たとえば、この基本パッケージ内のパッケージの数に制限はありません。

com.mycompany.myapp.persistence 
com.mycompany.myapp.domain 
com.mycompany.myapp.services 
com.mycompany.myapp.web 

これは、すべてのプロジェクトとあなたのコードとあなたのクラスを整理したい方法に依存します。

論理レベルでは、パッケージにはセパレータとしてドットが付けられます。それらにはJavaクラスが含まれています。

物理ディスクレベルでは、各パッケージはディレクトリです。 javaクラスは.javaファイルに含まれています(ファイルごとに1つのクラスが最も頻繁に使用されます)。

Eclipseでは、「ソースフォルダ」は、Javaソースファイルを含むようEclipseに認識されているプロジェクト内のフォルダです。プロジェクトをビルドするときに出力(たとえばJARファイル)にコンパイルされます。

Eclipseでは、通常、パッケージを表示する論理レベルでそれらを表示します。 Eclipseに「新しいパッケージを作成する」と指示すると、ディレクトリが作成されます。たとえば、com.mycompany.myprojectパッケージを作成するように指示すると、myprojectフォルダを含むmycompanyフォルダを含むcomフォルダが自動的に作成されます。

+0

私は上記のやり方をしなければならないが、すべてのパッケージを最初のパッケージに入れ子にする必要がありますか? – NibblyPig

+0

はい、基本的にはそうです。現在の "デフォルトパッケージ"のクラスはプロジェクトベースパッケージに直接含まれ、他のパッケージはその内部にネストされます。エンティティだけでなく、プロジェクトを識別するパッケージを選択してください。したがって、後で他のプロジェクトを作成すると、それらは異なる基本パッケージを持ちます。 –

+0

他にも言及されているように、Mavenをビルドツールとして使用することが賢明です。 Mavenには、主なソース、テストソース、リソースなどを分離する、異なる種類のプロジェクト(これはアーキタイプと呼ばれます)にデフォルトのプロジェクト構造があります。これらは通常非常に賢明で、他にも多くのメリットがあります.IHHは依存関係(JAR)管理で最大のものです。 –

1

パッケージ構造に一致している必要がありますパッケージが

のsrc/fooの/バーにレイアウトされなければならないので、foo.bar

また、デフォルトパッケージがないかもしれませんあなたはまだそれを使用することができます - パッケージに物事を入れても良いですが

+1

通常、 '/ src/foo/bar'はソースが'/src'にあることを意味します'foo.bar'というパッケージのクラスは'/src/foo/bar'フォルダにあります。 –

+1

C#をよく知っていれば、C#の名前空間として考えることができます。このコンセプトは非常に似ています。 – jnovacho

+0

@Mark Rotteveel - well spotted - 編集 – gheese

0

Javaの異なるプロジェクトでプロジェクトのタイプに応じて開発構造が流れます。 javaとEclipseを使い慣れていないので、mavenプラグインをインストールしてmavenプロジェクトを作成し、スタンドアロンやWebベースのようなプロジェクトのタイプに応じてアーキタイプを選択する方が良いです。 mavenプラグインは、パッケージ、テストパッケージソースフォルダなどを含むプロジェクト構造を作成します。this

0

デフォルトパッケージを使用すると、名前空間の衝突が発生することがあります。 MyClassクラスを含むライブラリを作成しているとします。誰かが自分のプロジェクトであなたのライブラリを使用していて、自分のデフォルトパッケージにMyClassクラスも持っています。コンパイラは何をすべきですか? Javaのパッケージは、実際にはプロジェクトを完全に識別する名前空間です。したがって、実際のプロジェクトでデフォルトのパッケージを使用しないことが重要です。

関連する問題