1

私はJavaとパッケージが初めてで、それらをナビゲートするのに助けが必要です. 現在、すべての .java および .class ファイルがmyapp/WEB-INF/classesLinux サーバーのディレクトリにある Web アプリケーション用の機能する Java プログラムがあります。

myapp/WEB-INF/classes/MyJavaClass1.class
myapp/WEB-INF/classes/MyJavaClass2.class
myapp/WEB-INF/classes/MyJavaClass3.class

これらのファイルにはコード行が含まれていpackageないため、システムのデフォルト パッケージが使用されていると想定します。

次に、mytoolsディレクトリを追加し、そこに新しいクラスを作成しました。

myapp/WEB-INF/classes/mytools/MyToolClass1.class

myapp/WEB-INF/classesしかし、これらのJavaファイルにパッケージ名が含まれていない限り、この新しいクラスはディレクトリ内のクラスにアクセスできないようです。私の質問は、ファイルをシステムのデフォルト パッケージ (たとえば、パッケージが指定されていない) から名前付きパッケージに変更する方法です。

package mypackage;MyJavaClass1.java、MyJavaClass2.java、および MyJavaClass3.java の最初の行に追加し、MyToolClass1.java に追加する必要がありますpackage mypackage.mytools;か?

または、上記を実行する前に、mypackageそのようなディレクトリを作成しmyapp/WEB-INF/classes/mypackage、そこに MyJavaClass1.class などのファイルを配置する必要がありますか?

次に、.java ファイルをコンパイルするとき、それぞれのディレクトリ内でコンパイルしますか (または、すべてのファイルを最上位ディレクトリからコンパイルする必要がありますか)。

更新 1

のJavaファイルのデフォルトパッケージ(つまり、パッケージなし)をそのままにしてmyapp/WEB-INF/classes、追加する場合:

package mytools;
import MyJavaClass1;

MyToolClass1.java に追加し、ディレクトリから MyToolClass1.java をコンパイルしようとするとmytools、次のコンパイル エラーが発生します。

MyToolClass1.java:21: '.' expected
import MyJavaClass1;
                   ^
MyToolClass1.java:21: ';' expected
import MyJavaClass1;
                    ^
2 errors
4

1 に答える 1

2

あなたが説明したように、Javaパッケージはクラスの一番上に定義されています。すべてのコードがルートにある、つまりパッケージがないという理由だけで、コードが機能しています。すべてのクラスをパッケージに移動することをお勧めします...それらをすべて mytools ディレクトリに移動し、package mytools;それぞれに追加します。

パッケージのベスト プラクティスのクイック リファレンスについては、このパッケージ チュートリアルをお読みください。おそらく、関連する関数ごとにクラスをパッケージ化することをお勧めします。つまり、一部は mytools ディレクトリに移動し、一部は mytools/parse に移動します ( package mytools.parse;)

于 2012-06-17T16:54:29.103 に答える