【发布时间】:2016-06-22 06:11:38
【问题描述】:
我正在尝试创建简单的extension module。
我创建了Main.groovy 文件
class Item {
String item
}
new Item().sayHello() // this method supposed to be extension
我编译了它(没有运行)。
我创建了ItemExtension.groovy 类
class ItemExtension {
def sayHello(Item self) {
println "hello world"
}
}
这是我的org.codehaus.groovy.runtime.ExtensionModule 描述符
moduleName=Item extension module
moduleVersion=1.0
extensionClasses=ItemExtension
我使用groovyc 编译了ItemExtension.groovy(我预编译了Main.groovy 以获得Item 类)
groovyc ItemExtension.groovy
编译ItemExtension.class 和META-INF 我放入.jar 文件(重命名为.rar)。
它的结构是这样的
META-INF\services\org.codehaus.groovy.runtime.ExtensionModule
ItemExtension.class
我将ItemExtension.jar 与Main.groovy 放在同一个文件夹中并再次编译它,但使用cp 参数添加jar。
groovyc -cp ItemExtension.jar Main.groovy
但是当我尝试运行它时
groovy Main
我得到了这个异常
Caught: groovy.lang.MissingMethodException: No signature of method: Item.sayHell
o() is applicable for argument types: () values: []
groovy.lang.MissingMethodException: No signature of method: Item.sayHello() is a
pplicable for argument types: () values: []
at Main.run(Main.groovy:6)
我做错了什么?
【问题讨论】: