Groovy:为什么同一个包中的类需要导入?
com.something包中的一个简单Groovy类 同一包中的另一个类Groovy:为什么同一个包中的类需要导入?,groovy,Groovy,com.something包中的一个简单Groovy类 同一包中的另一个类 package com.something class B { def variable=new A() //DOES NOT WORK TILL I EXPLICITLY say "import com.something.A" } 为什么B类即使在同一个包中也不能访问A类?遗憾的是,这个问题实际上没有完整回答它所需的信息。但我可以告诉你以下几点。如果创建一个目录./com/something/并在其中输出
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类,都位于同一个项目和同一个物理文件夹中,对吗?您所说的“不工作”-不编译是什么意思?不跑?IDE是说您需要导入?您正在使用哪个IDE?当然,两者都在同一个项目中。它确实编译,但在编译时失败running@tim_yates类B由绑定到IZPack的groovy脚本使用,IZPack是一种基于Java的安装程序、生命周期方法。IZPack的groovy脚本位于不同的maven模块中,该模块依赖于包含这两个类的模块。
package com.something
class B {
def variable=new A() //DOES NOT WORK TILL I EXPLICITLY say "import com.something.A"
}