クラス org.foobar.MyClass があり、それを JAR ファイルに入れたい場合、JAR の /org/foobar/ ディレクトリに入れる必要がありますか、それとも /bin/org/foobar/ に入れることができますか? /bin/ を JAR 自体のクラスパスとして指定しますか?
5 に答える
マニフェストに Class-Path プロパティを含めて、アプリが依存する jar ファイルをリストすることができます。パスは、実行可能な JAR の場所に対して相対的であると見なされます。
たとえば、app.jar の MANIFEST.MF に次のものが含まれているとします。
クラスパス: lib1.jar,lib/lib2.jar
次に、JVM は、lib1.jar が app.jar と同じディレクトリにあること、および lib2.jar を含む lib というサブディレクトリにあることを期待します。
誰もがこれを行う通常の方法(これまでのところ、JARが何か違うことをするのを見たことがありません)は、クラスorg.foobar.MyClassをJARの/ org /foobar/ディレクトリにあるJARファイルに配置することです。異常なことをしていない人がこのJARを通常使用するのを妨げるので、何か別のことをする正当な理由を想像することはできません。
これは、マニフェストファイルを使用することで実現できると思います。私の記憶が正しければ、jar内の特定のファイルの場所を指定できます。
jar ファイル内の名前は、クラス名と一致する必要があります。もちろん、奇妙なことをするカスタム クラス ローダーを作成しない限り。
jar URL を使用して、jar ファイル内の「ディレクトリ」を指定できます。URLClassLoader
ただし、これを正しく処理するとは思いません (試していません)。
標準として存在する機能は、他の jar ファイルをマニフェストで指定してクラスパスに追加することです。
なぜ後者をするのですか?パッケージ名に基づいて正しいディレクトリに配置する方が簡単です。これにより、MANIFESTファイルを編集したり、その他の特別な設定を行ったりする必要がなくなります。