我正在研究我从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编译也会失败并出现相同的错误。
知道问题可能是什么?
由于
答案 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