包 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类,即使它们都在同一个包中?
答案 0 :(得分:1)
可悲的是,这个问题并没有完全回答所需的信息。但我可以告诉以下内容。如果你在那里创建一个目录./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的根目录不同并且你没有给编译器两者,那么肯定会失败。
我不知道是不是这个原因,所以我希望这个答案更容易被理解为可能出错的指针。希望这有帮助