包 com.something 中的一个简单 Groovy 类
package com.something
class A {
}
同包中的另一个类
package com.something
class B {
def variable=new A() //DOES NOT WORK TILL I EXPLICITLY say "import com.something.A"
}
为什么 B 类不能访问 A 类,即使它们都在同一个包中?
最佳答案
遗憾的是,这个问题并没有真正完整回答它所需的信息。但我可以告诉以下内容。如果您创建一个目录 ./com/something/并在其中输出 A.groovy 和 B.groovy,然后使用命令行 groovyc ./com/something/A.groovy ./com/something/B 编译它们。 groovy
,那么这一定行得通。到目前为止,该目录并不是很重要,但是如果您更改为 groovyc ./com/something/B.groovy
,那会发生变化,因为现在 groovyc 必须“发现”A.groovy 并需要正确的目录为此的结构。
现在,groovyc 的 ant、gradle 和 maven 版本通常如何工作是通过提供完整的源列表。如果不这样做,编译可能会失败。但是,如果 A 和 B 的根目录不同,并且您没有将两者都提供给编译器,那么它肯定会失败。
我不知道这是否是原因,所以我希望这个答案更多地被理解为指向可能错误的指针。希望这有帮助
关于Groovy:为什么同一个包中的类需要导入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20888049/