Declaração de importação sob demanda apenas com subpacotes
Relacionado:Como eu posso compilar "import pack. *" Com ant / javac, quando não existem essas classes?
Suponha que tenhamos a estrutura de pacotes dada
parent
|
---a
---b
onde o pacoteparent
contém apenas as duas sub-embalagensa
eb
(nenhuma classe está sob o pacoteparent
).
O códigoimport parent.*
, situado em um pacote diferente deparent
, compilado com Maven (ou seja,javac
) lança um erro de compilação. O erro é:
pai de pacote não existe
Analisei a Especificação da Linguagem Java sobre esse caso (declaração de importação sob demanda em que nenhum tipo é realmente importado).Parágrafo 7.5.2 do JLS sobre declaração de importação sob demanda não parece especificar esse comportamento.
Isso é um bug dejavac
? Eu não estou perguntando como contornar o erro de compilação. Eu gostaria de saber porquejavac
lança um erro porque não consigo encontrar nenhuma referência no JLS que deveria; levando-me a acreditar que isso pode ser um bug.
Eu testei com o JDK 1.4, 1.6, 1.7 e 1.8, o erro é o mesmo.
Como uma nota lateral, não há erro de compilação com o mesmo código no Eclipse (testado com Eclipse Indigo, Juno, Luna e Mars).
NB: Eu encontrei esse comportamento quando "mavenizing" um projeto (antigo) existente que dependia apenas do compilador do Eclipse. Demorei um pouco para identificar que essa era a causa raiz do erro de compilação que eu estava recebendo.