gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 01:45:22 29 4
gpt4 key购买 nike

~/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 {
}

错误:

% groovyc Simple.groovy org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: Compilation incomplete: expected to find the class lib.GTemplate in /home/bhaarat/groovy/lib/GTemplate.groovy, but the file contains the classes: GTemplate 1 error

最佳答案

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

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

package lib

但是,这意味着 GTemplate 的完全限定名称现在实际上是 lib.GTemplate。这可能不是您想要的。

或者,如果您想使用子文件夹中的文件而不使用包,您可以从 Simple.groovy 中删除 import 语句,然后编译并运行像这样的类:

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

NOTE: If you don't have a CLASSPATH already set, you can simply use:

groovyc -classpath ./lib/ Simple.groovy
groovy -classpath ./lib/ Simple

Also, for windows machines, change $CLASSPATH: to %CLASSPATH%;

强烈建议学习包并了解它们的工作原理。看看这个Wikipedia article on Java packages为起点。

关于groovy - 如何在另一个 groovy 脚本中简单地导入 groovy 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8738118/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com