我有一个特点:
trait AbstractSender {
abstract SentTrigger sendMail(Mail main)
SentTrigger sentTrigger(Mail mail){
//do smth here
}
}我还有一堂课:
class EmailSender implements AbstractSender{
@Override
SentTrigger sendMail(Mail mail){
//do some stuff
}
}我试着用gmavenplus插件编译它:
<plugin>
<groupId>org.codehaus.gmavenplus</groupId>
<artifactId>gmavenplus-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<goals>
<goal>addSources</goal>
<goal>addTestSources</goal>
<goal>generateStubs</goal>
<goal>compile</goal>
<goal>testGenerateStubs</goal>
<goal>testCompile</goal>
<goal>removeStubs</goal>
<goal>removeTestStubs</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<!-- any version of Groovy \>= 1.5.0 should work here -->
<version>2.4.4</version>
<scope>runtime</scope>
</dependency>
</dependencies>
</plugin>并获得编译异常:
EmailSender不是抽象的,也不覆盖AbstractSender中的抽象方法sentTrigger。
方法实现了sentTrigger。生成的java代码是这样的:
@groovy.transform.Trait() public interface AbstractSender
{
;
SentTrigger sendMail(Mail mail);
sentTrigger sentTrigger(Mail mail);
}这确实解释了编译错误。我对gmavenplus插件做了什么错事?
发布于 2015-08-26 15:23:07
这不是GMavenPlus配置问题。你可以把这个放到你的GroovyConsole中来演示
trait AbstractSender {
abstract SentTrigger send(Mail main)
SentTrigger sentTrigger(Mail mail) { }
}
class EmailSender implements AbstractSender{
@Override
SentTrigger sendMail(Mail mail) { }
}
class Mail { }
class SentTrigger { }
new EmailSender()你看到的错误信息是正确的。EmailSender只实现sendMail(),而不是send()。如果将sendMail()重命名为send(),则应该正确编译。
https://stackoverflow.com/questions/32224258
复制相似问题