3

私はここで例を進めています:

http://www.vogella.com/articles/JavaPDF/article.html

私のファイルには、次のものがあります。

package com.mycompanyname.mydirectory;

import com.mycompanyname.OneOfMyClasses;
import com.itextpdf.text.Document;
...

 public class MyClass {
     ...
 }

すべてが正常に機能しています。私が理解できないのは、iText部分の上記のリンクからインポートステートメントを直接コピーしただけなので、なぜ機能com.itextpdf.text.Documentするのですか?

つまり、ディレクトリcom.mycompanynameを見ると、OneOfMyClasses.javaそこにあることがわかります。

しかし、com直接には、itextpdfディレクトリはありません(私のユーザーはそれを見る権限を持っていないかもしれませんが(?))。

誰かが私がここで欠けているものを理解するのを手伝ってくれることを願っています. インポートは、クラスを表示できる特定のディレクトリを指していませんか? comiText が使用している別のディレクトリがどこかにあり、com.itextpdf.textそこを指していますか? (もしそうなら、ディレクトリはどこにありますか)?

いつものように iText の jar ファイルをlibフォルダーにインストールし、それがクラスパスに含まれていることを確認しました。

4

4 に答える 4

7

これらのクラスは、クラスパスに追加される JAR ファイル内にあります。

パッケージ「de.vogella.itext.write」で新しい Java プロジェクト「de.vogella.itext.write」を作成します。「lib」フォルダを作成し、iText ライブラリ (jar ファイル)をこのフォルダに入れます。jar をクラスパスに追加します

import ステートメントは、コンパイル時の現在のディレクトリ (通常はプロジェクトの src/ ディレクトリ) と、環境変数または JVM 起動パラメーターで指定されたディレクトリを含む、クラスパスにあるディレクトリ ツリー内を調べます。クラスパスについてはこちらをご覧ください。

編集

パッケージ間でクラスを使用するときは常にインポートが必要です。定義するすべてのパブリック クラス/インターフェイスはパッケージ内にあります。参照しているものが別のパッケージに属している場合は、それをインポートする必要があります。

JAR は、ディレクトリとファイルを内部に含む zip ファイルです。これはプレーンなディレクトリやファイルと同じで、パックされているだけです。

于 2013-06-25T23:53:01.073 に答える
1

これは、前のステップで追加した iText 依存関係 (jar) からのものです。

于 2013-06-25T23:53:18.000 に答える
1

必ずしもそうではありません - ライブラリなどからインポートすることもできます。

実際、Java はclasspathを検索しようとします。ここにいくつかの役立つドキュメントがあります。

于 2013-06-25T23:53:32.757 に答える
1

そのクラスは、おそらくJARライブラリにインポートされます。このような JAR ファイル内では、クラス ファイルは、インポート時に使用するのとまったく同じパッケージ/フォルダー構造で保持されます。

于 2013-06-25T23:54:17.227 に答える