相关:当没有这样的类时,如何使用 ant/javac 编译“import pack.*”?
假设我们有给定的包结构
parent
|
---a
---b
其中包parent
只包含两个子包a
和b
(包下没有类parent
)。
import parent.*
位于 以外的包中的代码parent
用 Maven(即javac
)编译会引发编译时错误。错误是:
包父级不存在
我查看了有关这种情况的 Java 语言规范(实际没有导入类型的按需导入声明)。JLS 关于按需进口声明的第 7.5.2 段似乎没有指定这种行为。
这是一个错误javac
吗?我不是在问如何规避编译错误。我想知道为什么javac
会抛出错误,因为我在 JLS 中找不到它应该的任何引用;让我相信这可能是一个错误。
我用JDK 1.4、1.6、1.7和1.8测试过,错误是一样的。
附带说明一下,在 Eclipse 中使用相同的代码没有编译错误(使用 Eclipse Indigo、Juno、Luna 和 Mars 测试)。
注意:我在“mavenizing”仅依赖 Eclipse 编译器的(旧)现有项目时遇到了这种行为。我花了一段时间才确定这是我得到的编译错误的根本原因。