2012-05-07 11 views
0

com.itextpdf.*のサブライブラリを指定してもプログラムをコンパイルできますが、なんらかの理由で私が単にimport com.itextpdf.*を実行するとコンパイルに失敗します。しかし、私のように私は、このようなJavaのインポートエラーですが、EclipseではなくAntを使用

import com.itextpdf.text.Font.*; 
import com.itextpdf.text.pdf.*; 
として私が使用しているサブライブラリ、

を指定した場合、すべてがうまくコンパイル、と述べました。それが失敗した場合、私が得ているエラーは "package com.itextpdf does not exist"ですが、わかっています。私はそれをビルド・パスに正しく組み込み、Eclipseはどんな場合でもコンパイル・エラーを与えません。エラーは、Antでビルドしようとすると発生します。

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

答えて

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の場合、ファイルの先頭までスクロールしない限り、自動的に表示されません。

+0

これは何が起こったかです。 Antコンパイラは、このような基本レベルの 'com.itextpdf。*;'でimport文を理解できませんでしたが、Eclipseはそれを処理できました。私は将来、私の輸入陳述をより明白にすることに同意する。 – Sal

関連する問題