2
我想創建簡單的extension module
。添加擴展模塊到groovy類
我創建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)
我做了什麼錯?
嗯。沒有幫助 – lapots
哦,我也錯過了使用擴展jar(這不是必須的,因爲你的代碼是動態的)編譯的事實,但運行*沒有*它。在執行腳本時,擴展必須位於classpath上: 'groovyc Main.groovy' then groovy -cp ItemExtension.jar Main.groovy' 應該工作 – melix
仍然不起作用。我想我需要重新閱讀文檔。也許忽略了一些東西(如靜態) – lapots