~/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 {
}
Run Code Online (Sandbox Code Playgroud)
错误:
%groovyc Simple.groovy org.codehaus.groovy.control.MultipleCompilationErrorsException:startup failed:编译不完整:希望在/home/bhaarat/groovy/lib/GTemplate.groovy中找到类lib.GTemplate,但该文件包含以下类: GTemplate 1错误
看起来你在使用类似PHP的技术混淆了Groovy.
因为它更接近Java,如果一个类存在于子文件夹中,它需要存在于同名的包中.在您的示例中,您可以将此行添加到顶部GTemplate.groovy并重新编译该文件:
package lib
Run Code Online (Sandbox Code Playgroud)
但是,这意味着现在实际上是GTemplate的完全限定名称lib.GTemplate.这可能不是你想要的.
或者,如果要在不使用包的情况下使用子文件夹中的文件,可以import从中删除语句Simple.groovy,然后编译并运行类,如下所示:
groovyc -classpath $CLASSPATH:./lib/ Simple.groovy
groovy -classpath $CLASSPATH:./lib/ Simple
Run Code Online (Sandbox Code Playgroud)
注意:如果您没有
CLASSPATH设置,您可以简单地使用:Run Code Online (Sandbox Code Playgroud)groovyc -classpath ./lib/ Simple.groovy groovy -classpath ./lib/ Simple此外,对于Windows机器,更改
$CLASSPATH:为%CLASSPATH%;
我强烈建议学习包并了解它们的工作原理.查看这篇关于Java包的维基百科文章的起点.
| 归档时间: |
|
| 查看次数: |
26461 次 |
| 最近记录: |