Java 类型层次结构中kotlin委托的AspectJ编译器问题

Java 类型层次结构中kotlin委托的AspectJ编译器问题,java,compiler-errors,kotlin,aspectj,aspectj-maven-plugin,Java,Compiler Errors,Kotlin,Aspectj,Aspectj Maven Plugin,注意 TLDR;我发现这只是一个环境问题。带有kotlin代码的JAR有旧的类文件,这些文件导致了编译器100%正确处理的意外问题 我认为JAR中还有另一个我试图依赖的类文件,叫做SimpleLink,它是一个类而不是一个接口。当我删除.kt文件时,Gradle Kotlin编译插件没有删除这些类。LPT:在尝试发布之前运行Gradle clean任务,即使您只发布到maven local 针对使用另一个项目中的kotlin类的代码进行aspectj链接时,我遇到了一个问题 aspectJ编译

注意

TLDR;我发现这只是一个环境问题。带有kotlin代码的JAR有旧的类文件,这些文件导致了编译器100%正确处理的意外问题

我认为JAR中还有另一个我试图依赖的类文件,叫做
SimpleLink
,它是一个类而不是一个接口。当我删除
.kt
文件时,Gradle Kotlin编译插件没有删除这些类。LPT:在尝试发布之前运行Gradle clean任务,即使您只发布到maven local


针对使用另一个项目中的kotlin类的代码进行aspectj链接时,我遇到了一个问题

aspectJ编译器正在运行版本
1.8.6

我的问题是,我一直看到:

类型不匹配:无法从元素类型ExtendedSimpleLink转换为SimpleLink

我有一个类型层次结构,其中
ExtendedSimpleLink扩展了LinkDecorator
,其中
LinkDecorator
是用kotlin编写并在另一个项目中编译的,
ExtendedSimpleLink
是用aspectj编译器进行java编译的

LinkDecorator
如下所示:

abstract class LinkDecorator(
    private val decorated : SimpleLink
) : SimpleLink by decorated {
    override fun hashCode(): Int = decorated.hashCode()

    override fun equals(other: Any?): Boolean = decorated == other
}
我不知道为什么aspectj编译器不能理解类型层次结构。 它应该查看
LinkDecorator
的字节码,并指出
ExtendedSimpleLink
显然是
SimpleLink
的一个实例

例如,以下代码(尝试由aspectJ编译器编译):

编译上述类时,maven会出现以下错误:

[ERROR] /Users/[user]/work/tmp/[project]/Core/src/main/java/com/company/core/engine/fitting/ExtendedSimpleLink.java:50:0::0 The return type is incompatible with LinkDecorator.getFabricLinkMetricEnhancement()
[ERROR] error at if (decorated instanceof ExtendedSimpleLink)
[ERROR] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[ERROR] /Users/[user]/work/tmp/[project]/Core/src/main/java/com/company/core/engine/fitting/ExtendedSimpleLink.java:58:0::0 Incompatible conditional operand types SimpleLink and ExtendedSimpleLink
[ERROR] error at return (ExtendedSimpleLink) decorated;
[ERROR] ^^^^^^^^^^^^^^^^^
IntelliJ似乎完全可以使用此代码。但是,我认为它使用JavaC编译器进行linting

我的问题是,为什么会这样?AspectJ编译器中是否存在已知问题?例如,groovy和aspectJ编译器的互操作是否存在类似的问题

更新

我已尝试添加以下内容,以查看它是否解决了问题:

final class ExtendedSimpleLink extends LinkDecorator implements SimpleLink {
    // same as above...
}
现在,我有了与之前相同的所有例外,但在混合中添加了一个新的例外:

[ERROR] error at final class ExtendedSimpleLink extends LinkDecorator implements SimpleLink
[ERROR] ^^^^^^^^^
[ERROR] /Users/[user]/work/tmp/[project]/Core/src/main/java/com/company/core/engine/fitting/ExtendedSimpleLink.java:23:0::0 The type SimpleLink cannot be a superinterface of ExtendedSimpleLink; a superinterface must be an interface
[ERROR] error at final class ExtendedSimpleLink extends LinkDecorator implements SimpleLink
[ERROR] ^^^^^^^^^
[ERROR] /Users/[user]/work/tmp/[project]/Core/src/main/java/com/company/core/engine/fitting/ExtendedSimpleLink.java:23:0::0 The type SimpleLink cannot be a superinterface of ExtendedSimpleLink; a superinterface must be an interface