Java注释在Kotlin项目jar

时间:2018-01-24 04:47:28

标签: java maven kotlin

我正在研究我从Java转移到Kotlin的库。由于项目仍然与两种语言混合,我使用kotlin-maven-plugin和maven-compiler-plugin,如https://kotlinlang.org/docs/reference/using-maven.html中所述。 Kotlin版本是1.2.10。

我需要在库中创建一个注释,该注释将用于其他项目。注释是标准的Java注释,我可以构建我的库。

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface EnableSomeBehavior {

}

当我在另一个项目(Java项目)中导入库时,我可以看到注释。我的IDE(IntelliJ)中的自动完成实际上建议我注释..但由于某种原因,无法导入它:当我验证自动完成选项时,我收到编译错误"无法解决symbol' EnableSomeBehavior' "

这非常令人费解......我已经多次重建(如果罐子已损坏),但它没有改变任何东西。

我怀疑它与编译和/或打包Kotlin / Java库的方式有关。罐子里有Java注释,我可以看到它,在某种程度上, IDE也可以看到它,因为它提出了它。但不知何故,它无法使用它。它不是IDE问题,因为即使从命令行使用Maven编译也会失败并出现相同的错误。

知道问题可能是什么?

由于

1 个答案:

答案 0 :(得分:0)

最初,我发现如果注释是Kotlin而不是Java,它会更好用:

@Target(AnnotationTarget.CLASS, AnnotationTarget.FILE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
annotation class EnableSomeBehavior

重建我的库后,IntelliJ不会使用注释显示项目中的任何错误。但是,编译仍然会失败!

我最终发现它不是Kotlin问题,而是一个Spring Boot包装问题:Using Kotlin classes from jar built with kotlin-maven-plugin