如何在另一个groovy脚本中简单地导入groovy文件

如何在另一个groovy脚本中简单地导入groovy文件,groovy,Groovy,错误: %groovycsimple.groovy org.codehaus.groovy.control.multipleCompationerErrorSexception: 启动失败:编译未完成:应找到该类 在/home/bharat/groovy/lib/GTemplate.groovy中使用lib.GTemplate,但是 文件包含类:GTemplate 1错误 看起来您将Groovy与类似PHP的技术混淆了 因为它更接近Java,如果一个类存在于子文件夹中,它需要存在于同名的包中。在

错误:

%groovycsimple.groovy org.codehaus.groovy.control.multipleCompationerErrorSexception: 启动失败:编译未完成:应找到该类 在/home/bharat/groovy/lib/GTemplate.groovy中使用lib.GTemplate,但是 文件包含类:GTemplate 1错误


看起来您将Groovy与类似PHP的技术混淆了

因为它更接近Java,如果一个类存在于子文件夹中,它需要存在于同名的包中。在您的示例中,可以将这一行添加到
GTemplate.groovy
的顶部,然后重新编译文件:

~/groovy
 % tree
.
├── lib
│   ├── GTemplate.class
│   └── GTemplate.groovy
└── Simple.groovy


class GTemplate {
  static def toHtml() {
    this.newInstance().toHtml1()
  }
  def toHtml1() {
    "test"
  }
}


import lib.*
class Simple extends GTemplate {
}
但是,这意味着GTemplate的完全限定名现在实际上是
lib.GTemplate
。这可能不是你想要的

或者,如果您希望使用子文件夹中的文件而不使用包,则可以从
Simple.groovy
中删除
import
语句,而是像这样编译和运行该类:

package lib
注意:如果尚未设置
类路径
,只需使用:

另外,对于windows计算机,将
$CLASSPATH:
更改为
%CLASSPATH%

我强烈建议学习软件包并了解它们的工作原理。看看这个作为一个起点

groovyc -classpath $CLASSPATH:./lib/ Simple.groovy
groovy -classpath $CLASSPATH:./lib/ Simple
groovyc -classpath ./lib/ Simple.groovy
groovy -classpath ./lib/ Simple