我正在将我的Spring Boot 1.5 + Kotlin 1.2.41项目构建到一个jar中。 jar中的一个接口有@JvmDefault
,并且它与标志编译良好(如果我删除标志,它会失败)。
现在,我正在尝试在另一个java项目中使用此接口,在该项目中我将Kotlin项目定义为依赖项。
在一个实现类中,我没有覆盖默认方法。 Intellij似乎没问题,因为它没有抱怨。但是,当我使用Maven编译时,我得到:
[ERROR] attempting to assign weaker access privileges; was public
如果我实现了这个方法(带有一些虚拟实现),那么它会编译......但它会破坏默认接口的目的。
知道可能出现什么问题吗?
从java项目打开Kotlin接口代码时,这是我看到的反编译代码:
public interface CrawlerOutput {
@kotlin.jvm.JvmDefault public open fun finalize(): kotlin.Unit { /* compiled code */ }
public abstract fun output(analyzedRepository: com.myCompany.Repository): kotlin.Unit
}
我实现界面的java代码:
public class CsvOutput implements CrawlerOutput {
@Override
public void output(Repository repository) throws IOException {
log.info("own output is receiving some data !");
}
/**
* IF I REMOVE BELOW METHOD, MAVEN CAN'T COMPILE IT ANYMORE,
* COMPLAINING OF WEAKER ACCESS PRIVILEGE
*/
@Override
public void finalize(){
}
}
我错过了什么吗?
由于
文森特
答案 0 :(得分:1)
您的方法名称与java.lang.Object.finalize()
冲突。如果您选择其他方法名称,则应修复错误。