0

のサブライブラリを指定すれば、プログラムを問題なくコンパイルできますcom.itextpdf.*が、何らかの理由で、単に指定するとコンパイルが失敗しますimport com.itextpdf.*。しかし、私が言ったように、私が使用しているサブライブラリを指定すると、

import com.itextpdf.text.Font.*;
import com.itextpdf.text.pdf.*;

すべてが正常にコンパイルされます。失敗した場合、「パッケージcom.itextpdfが存在しません」というエラーが表示されますが、存在することはわかっています。私はそれをビルドパスに適切に含めますが、Eclipseはどのような場合でもコンパイルエラーを出しません。このエラーは、Antでビルドしようとしたときにのみ発生します。

この時点で、ビルドを確実に取得するために使用するサブライブラリを指定してもかまいません。しかし、私は興味があります、なぜAntはこれを許可しないのですか?

4

1 に答える 1

1

あなたとEclipseは、Java名前空間を階層と考えています。ただし、Java仕様では、そうではありません。「com.itextpdf.text」と「com.itextpdf.text.Font」の間に関係はありません。それらは異なる文字列であり、話の終わりです。

スタイルの問題として、インポートを自動的に整理し、クラスのインポートセクションで使用するすべてのクラスを明示的に指定するようにEclipseを設定することをお勧めします。これにより、「com.itextpdf.text.Font.String」と「com.itextpdf.text.pdf.String」の両方が存在するが、どちらか一方のみを参照する場合のあいまいさが回避されます。このスタイルは、emacsまたはviでプログラミングしている場合、非常に面倒で不便ですが、Eclipseでは、ファイルの先頭までスクロールしない限り、自動的に表示されません。

于 2012-05-07T22:36:15.727 に答える