Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Groovy:为什么同一个包中的类需要导入?_Groovy - Fatal编程技术网

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/并在其中输出

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/并在其中输出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"
}