Декларация импорта по требованию только с подпакетами
Связанные с :Как мне скомпилировать?импортная упаковка. * " с ant / javac, когда нет таких классов?
Предположим, у нас есть заданная структура пакета
parent
|
---a
---b
где пакетparent
содержит только два подпакетаa
а такжеb
(нет класса под пакетомparent
).
Кодimport parent.*
расположенный в пакете, отличном отparent
составлено с помощью Maven (т.е.javac
) выдает ошибку во время компиляции. Ошибка:
родительский пакет не существует
Я посмотрел в спецификации языка Java о таком случае (объявление импорта по требованию, когда типы не импортируются).Пункт 7.5.2 JLS в декларации импорта по требованию, похоже, не указывается такое поведение.
Это ошибкаjavac
? Я не спрашиваю, как обойти ошибку компиляции. Я хотел бы знать, почемуjavac
выдает ошибку, потому что я не могу найти ссылку в JLS, которая должна; заставляет меня поверить, что это может быть ошибкой.
Я тестировал с JDK 1.4, 1.6, 1.7 и 1.8, ошибка та же.
В качестве примечания: в Eclipse нет ошибки компиляции с тем же кодом (проверено с Eclipse Indigo, Juno, Luna и Mars).
NB: я столкнулся с таким поведением, когда "mavenizing» (старый) существующий проект, который полагался только на компилятор Eclipse. Мне потребовалось некоторое время, чтобы понять, что это было основной причиной ошибки компиляции, которую я получал.