Import-on-Demand-Erklärung nur mit Unterpaketen

Verbunden :Wie kann ich "import pack. *" Mit ant / javac kompilieren, wenn es keine solchen Klassen gibt?

Angenommen, wir haben die angegebene Paketstruktur

parent
|
---a
---b

wo das paketparent Enthält nur die beiden Unterpaketea undb (Keine Klasse ist unter dem Paketparent).

Der Codeimport parent.*in einer anderen Verpackung alsparent, kompiliert mit Maven (d. h.javac) wirft einen Fehler bei der Kompilierung. Der Fehler ist:

Paket Eltern existiert nicht

Ich habe in der Java-Sprachspezifikation nach einem solchen Fall gesucht (Import-on-Demand-Deklaration, bei der tatsächlich keine Typen importiert werden).Ziffer 7.5.2 der JLS Über die Import-on-Demand-Deklaration scheint dieses Verhalten nicht zu spezifizieren.

Ist das ein Bug vonjavac? Ich frage nicht, wie ich den Kompilierungsfehler umgehen soll. Ich würde gerne wissen warumjavac Wirft einen Fehler, weil ich in der JLS keine Referenz finden kann, die es sollte. Dies könnte ein Fehler sein.

Ich habe mit JDK 1.4, 1.6, 1.7 und 1.8 getestet, der Fehler ist der gleiche.

Nebenbei bemerkt, es gibt keinen Kompilierungsfehler mit demselben Code in Eclipse (getestet mit Eclipse Indigo, Juno, Luna und Mars).

NB: Ich bin auf dieses Verhalten gestoßen, als ich ein (altes) vorhandenes Projekt "auslagerte", das sich nur auf den Eclipse-Compiler stützte. Es dauerte eine Weile, bis ich herausgefunden hatte, dass dies die Hauptursache für den Kompilierungsfehler war, den ich bekam.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage