试图从Groovy中的类内部调用函数,得到MissingMethodException
我正在运行以下代码(在Jenkins脚本控制台中): 出于善意,我希望构造函数代码调用将打印试图从Groovy中的类内部调用函数,得到MissingMethodException,groovy,Groovy,我正在运行以下代码(在Jenkins脚本控制台中): 出于善意,我希望构造函数代码调用将打印Hello的函数 相反,我得到了 groovy.lang.MissingMethodException: No signature of method: MyClass.sayHello() is applicable for argument types: () values: [] at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unw
Hello
的函数
相反,我得到了
groovy.lang.MissingMethodException: No signature of method: MyClass.sayHello() is applicable for argument types: () values: []
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:58)
这是怎么回事?我无法从类内部调用函数?不确定您要做什么以及为什么要这样做,但从脚本内部的构造函数调用“函数”的最简单方法是将其放入另一个类中:
class A {
static sayHello() {
println "Hello"
}
}
class MyClass {
MyClass() {
A.sayHello()
}
}
def a = new MyClass()
不确定您试图做什么以及为什么要这样做,但从脚本中的构造函数调用“函数”的最简单方法是将其放入另一个类中:
class A {
static sayHello() {
println "Hello"
}
}
class MyClass {
MyClass() {
A.sayHello()
}
}
def a = new MyClass()
出现错误是因为您无法从另一个类访问一个类的方法,除非您访问该类的实例。 在您的例子中,代码将自动嵌入从groovy.lang.Script派生的主类中的run()方法中。类MyClass是主类的内部类。看这里 解决方案:要访问Main类的方法sayHello(),必须使用
this
关键字传递它的实例:
def sayHello() {
println "Hello"
}
class MyClass {
MyClass(Script host) {
host.sayHello()
}
}
def a = new MyClass(this)
出现错误是因为您无法从另一个类访问一个类的方法,除非您访问该类的实例。 在您的例子中,代码将自动嵌入从groovy.lang.Script派生的主类中的run()方法中。类MyClass是主类的内部类。看这里 解决方案:要访问Main类的方法sayHello(),必须使用
this
关键字传递它的实例:
def sayHello() {
println "Hello"
}
class MyClass {
MyClass(Script host) {
host.sayHello()
}
}
def a = new MyClass(this)