私はこれらの2つの用語と混同しています。
また、Spring MVCプロジェクトのsrcフォルダーの下にファイルを作成するにはどうすればよいですか?Fileオブジェクトを使用して作成すると、C:\ SpringSourceTool内にファイルが作成されます...これはClassPathだと思いますか?
applicationcontext
アプリケーションのフォルダまたはルートを取得するにはどうすればよいですか?
私はこれらの2つの用語と混同しています。
また、Spring MVCプロジェクトのsrcフォルダーの下にファイルを作成するにはどうすればよいですか?Fileオブジェクトを使用して作成すると、C:\ SpringSourceTool内にファイルが作成されます...これはClassPathだと思いますか?
applicationcontext
アプリケーションのフォルダまたはルートを取得するにはどうすればよいですか?
回答:
ビルドパスは、アプリケーションのビルドに使用されます。これには、アプリケーションのコンパイルに必要なすべてのソースファイルとすべてのJavaライブラリが含まれています。
クラスパスは、アプリケーションを実行するために使用されます。これには、Javaアプリケーションの実行に必要なすべてのJavaクラスとライブラリが含まれます。クラスパスは必須です。デフォルトのパスは.
、Java仮想マシンがユーザー定義のパスを見つけられない場合に使用されます。(jarマニフェスト内のCLASSPATH
環境変数、-cp
フラグ、またはClass-Path:
属性)
クラスパスは、(標準の)JavaコンパイラとJavaランタイムに、コンパイルされたクラスの場所を指示する従来の方法です。これは通常、JARファイル名とディレクトリ名のシーケンスです。コンパイラとランタイムシステムで使用されるクラスパスはありませんする必要が同じですが、彼らは一般的である必要があり、特に小規模なプロジェクトのために、。
Buildpathは標準のJava用語ではありません。これは、典型的なIDEがアプリケーションを構成する「プロジェクト」間の関係を指定するより豊かな方法を表す用語です。IDEはこれを使用して、Javaコードをコンパイルするためのクラスパスとソースパス、およびそれを実行するためのクラスパスを把握します。IDEはまた、ビルドパスを使用して、コードとその依存関係を(たとえば)WARファイルとしてパッケージ化する方法を理解します。
たとえば、プロジェクトのEclipseビルドパスには、プロジェクトが依存する他のプロジェクトが含まれ、プロジェクトに含まれる/依存する追加のライブラリJARが一覧表示されます。また、ダウンストリームプロジェクトが依存できる現在のプロジェクトのパッケージも一覧表示されます。
(プロジェクトにMavenを使用している場合、IDEビルドパスメカニズムはPOMファイルで宣言された依存関係の二次的なものです。たとえば、Eclipseとm2eclipseを使用すると、ビルドパスはPOMファイルから合成されます。)
クラスパスは、コンパイルされたクラスとリソースをロードするために実行時に使用されます。
ビルドパスは、プロジェクトのビルドに必要な依存関係を見つけるためにコンパイル時に使用されます。
.class
ファイル(およびその他のコンパイル済みリソース)の検索に使用され、ビルドパスはコンパイルが必要なソースファイルの検索に使用されると言えますか?
各Javaプロジェクトには、プロジェクトのコンパイルに必要なすべての依存関係を指定する独自のビルドパスがあります。これらの依存関係は、ワークスペース内の他のJavaプロジェクト、Javaアーカイブ.jarファイル、または.classファイルを含むフォルダーから発生する可能性があります。
CLASSPATH環境では、.classファイル(つまり、jar、zipファイル– jar、zipファイル内にはjavaクラスのみがあります)のみを指定する必要があります。つまり、Java仮想マシン(JVM)がJavaクラスファイルを見つけるのを支援しています。
また、Spring MVCプロジェクトのsrcフォルダーの下にファイルを作成するにはどうすればよいですか?Fileオブジェクトを使用して作成すると、C:\ SpringSourceTool ...内にファイルが作成されます。
ここでJVMが開始されました。ファイルを作成する場合は、ここから相対パスを使用します。
私はことを説明するAndreas_Dの答えに追加したいビルド・パスが外部のパッケージおよびクラス見つけるためにIDE /コンパイラによって必要とされ、あなたのコードで使用します。 これらを「依存関係」と呼ぶこともあります。
注意:これらの外部パッケージは、圧縮された.jarファイル内にパッケージ化されている場合があります。実際、「ライブラリ」内に複数のjarファイルがパッケージ化されている場合があります。ライブラリまたはライブラリのグループは、多くの場合、「フレームワーク」を構成します。
コードに他の人が書いたコードが必要な場合は、コマンドを使用してそれらをクラスにインポートできますimport
。ただし、コンパイラまたはIDEはこれらのクラスがどこにあるかを知る必要があるため、このコマンドだけでは不十分です。あなたにはこれを指定ビルド・パス。
classpath
一方では、あなたのコードの実際の実行中に任意の依存関係を見つけるためにあなたのアプリケーションを実行しているJVMに指示します。
また、注意: クラスパスはJVMで使用するためのものです。
ビルドパスはIDE /コンパイラで使用するためのものであり、開発環境からクラスパスを構築する手段です。IDEを介してビルドパスを構成すると、プロジェクトに.classpathという隠しファイルも構成されます。これは、デプロイメント時にJVMへのクラスパスを提供するために使用されます。
クラスパス(ウィキペディアから):
従来の動的ロード動作と同様に、Javaプログラムを実行すると、Java仮想マシンはクラスを遅延して検出してロードします(クラスが最初に使用されたときにのみクラスのバイトコードをロードします)。クラスパスは、これらのクラスを定義するファイルをファイルシステム内で探す場所をJavaに指示します。
仮想マシンは、次の順序でクラスを検索してロードします。
ブートストラップクラス:Javaプラットフォームの基本となるクラス(Javaクラスライブラリのパブリッククラスと、このライブラリが機能するために必要なプライベートクラスで構成されます)。
拡張クラス:JREまたはJDKの拡張ディレクトリにあるパッケージ。
jre / lib / ext /ユーザー定義のパッケージとライブラリ
デフォルトでは、JDK標準APIのパッケージと拡張パッケージのみにアクセスでき、それらの場所を設定する必要はありません。すべてのユーザー定義パッケージおよびライブラリのパスは、コマンドライン(またはクラスを含むJarファイルに関連付けられたマニフェスト)で設定する必要があります。
簡単に言えば、プログラムの実行中、JVMは必要な場合にのみクラスをロードします。クラスが必要な場合、JVMはクラスパスに依存してバイトコードのロード元(.class
ファイルなど)を認識します。
ビルド・パスは、他の一方で、一般的にプロジェクトのソースコードをコンパイルするのに必要な追加のライブラリを検索する場所を知って、EclipseなどのIDEで使用されています。ビルドパスは実行時に使用されません。