Deklaracja importu na żądanie tylko z podpakietami
Związane z :Jak mogę skompilować „import pack. *” Z ant / javac, gdy nie ma takich klas?
Załóżmy, że mamy daną strukturę pakietu
parent
|
---a
---b
gdzie pakietparent
zawiera tylko dwa podpakietya
ib
(żadna klasa nie znajduje się pod pakietemparent
).
Kodimport parent.*
, umieszczony w opakowaniu innym niżparent
, skompilowany z Maven (tj.javac
) zgłasza błąd podczas kompilacji. Błąd jest:
rodzic pakietu nie istnieje
Przejrzałem specyfikację języka Java dotyczącą takiego przypadku (deklaracja import-na-żądanie, w której żadne typy nie są faktycznie importowane).Punkt 7.5.2 JLS o deklaracji import-na-żądanie nie wydaje się określać tego zachowania.
Czy to błądjavac
? Nie pytam, jak obejść błąd kompilacji. Chciałbym wiedzieć dlaczegojavac
zgłasza błąd, ponieważ nie mogę znaleźć żadnego odniesienia w JLS, które powinno; prowadząc mnie do przekonania, że to może być błąd.
Testowałem z JDK 1.4, 1.6, 1.7 i 1.8, błąd jest taki sam.
Na marginesie, nie ma błędu kompilacji z tym samym kodem w Eclipse (testowany z Eclipse Indigo, Juno, Luna i Mars).
NB: Zetknąłem się z tym zachowaniem podczas „mavenizing” (starego) istniejącego projektu, który polegał tylko na kompilatorze Eclipse. Zajęło mi trochę czasu, aby stwierdzić, że to była główna przyczyna błędu kompilacji, który otrzymałem.