関連 :そのようなクラスがない場合、ant/javac で "import pack.*" をコンパイルするにはどうすればよいですか?
与えられたパッケージ構造があるとします
parent
|
---a
---b
パッケージには 2 つのサブパッケージと(パッケージの下にクラスはありません)parent
のみが含まれます。a
b
parent
Maven でコンパイルされたimport parent.*
以外のパッケージにあるコード(つまり) は、コンパイル時エラーをスローします。エラーは次のとおりです。parent
javac
パッケージの親が存在しません
そのような場合(実際には型がインポートされないオンデマンド宣言)についてJava言語仕様を調べました。インポートオンデマンド宣言に関するJLSのパラグラフ7.5.2は、この動作を指定していないようです。
これは のバグjavac
ですか? コンパイル エラーを回避する方法を尋ねているわけではありません。javac
JLS で必要な参照が見つからないため、エラーがスローされる理由を知りたいです。これはバグかもしれないと私に信じ込ませました。
JDK 1.4、1.6、1.7、および 1.8 でテストしましたが、エラーは同じです。
ちなみに、Eclipse では同じコードを使用してもコンパイル エラーは発生しません (Eclipse Indigo、Juno、Luna、および Mars でテスト済み)。
注: Eclipse コンパイラーのみに依存する (古い) 既存のプロジェクトを "mavenize" しているときに、この動作に遭遇しました。これがコンパイル エラーの根本的な原因であることを特定するのにしばらく時間がかかりました。