當(dāng)我們寫Groovy腳本代碼的時(shí)候,有時(shí)會(huì)發(fā)生編譯錯(cuò)誤,如下:
- Groovy:Invalid duplicate class definition of class XXX : The source XXXX\XXX.groovy contains at least two
definitions of the class XXX.
- The type XXX is already defined
原因在于Groovy會(huì)把.groovy代碼文件作為腳本或類定義來處理,例如如下代碼:
class Order {
def security
def value
private buy_sell(su, closure) {
security = su[0]
quantity = su[1]
closure()
}
def getTo() {
this
}
}
def methodMissing(String name, args) {
order.metaClass.getMetaProperty(name).setProperty(order, args)
}
def getNewOrder() {
order = new Order()
}
Integer.metaClass.getShares = { -> delegate }
Groovy會(huì)把上述代碼作為腳本處理,同時(shí)缺省用文件名來作為一個(gè)外圍類類包括整個(gè)腳本程序,此時(shí),如果該文件名恰好也是Order的話,那么就會(huì)出現(xiàn)重復(fù)的類定義錯(cuò)誤提示。
解決辦法是將腳本文件名取另外一個(gè)不同的名字。