Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin/Java-构造函数编译的属性参数的Java注释中不存在引用_Java_Maven_Kotlin_Intellij Idea_Annotations - Fatal编程技术网

Kotlin/Java-构造函数编译的属性参数的Java注释中不存在引用

Kotlin/Java-构造函数编译的属性参数的Java注释中不存在引用,java,maven,kotlin,intellij-idea,annotations,Java,Maven,Kotlin,Intellij Idea,Annotations,在我的公司,我们开始将Kotlin与Java混合,并发现了一个奇怪的场景。当我在Kotlin类中的构造函数的属性参数上放置Java注释,并使用不存在的引用作为注释的参数之一时,IntelliJ直观地指示错误,但它的构建(Ctrl+F9)和maven的构建编译正常,没有错误 我们正在使用Java8和Kotlin1.4.20 以下是声明为Java文件的注释: @Retention(RetentionPolicy.RUNTIME) @目标({ElementType.FIELD,ElementType.

在我的公司,我们开始将Kotlin与Java混合,并发现了一个奇怪的场景。当我在Kotlin类中的构造函数的属性参数上放置Java注释,并使用不存在的引用作为注释的参数之一时,IntelliJ直观地指示错误,但它的构建(Ctrl+F9)和maven的构建编译正常,没有错误

我们正在使用Java8和Kotlin1.4.20

以下是声明为Java文件的注释:

@Retention(RetentionPolicy.RUNTIME)
@目标({ElementType.FIELD,ElementType.METHOD})
需要公共@接口{
字符串作用域()默认为“ABC”;
}
下面是使用注释的Kotlin类(class
Abc
不存在):

数据类测试(
//正常编译
@必需(范围=Abc.X)
val文本:字符串
) {
//编译错误
@必需(范围=Abc.X)
funx(){
}
}
正如代码注释中提到的,放置在Kotlin函数中的同一注释的行为与预期的一样(即,代码不编译)。声明为Kotlin文件的等效注释的行为也符合预期

运行代码时,
scope
变量采用其默认值,因此不存在运行时错误

我已经尝试过:

  • 使IntelliJ缓存无效并重新启动
  • 将注释声明从
    @Required(scope=Abc.X)
    切换到
    @field:Required(scope=Abc.X)
我还试图在一个全新的项目中复制这种行为,但没有继承公司的BaseMaven项目,但没有成功


老实说,我认为这很可能与公司的项目有关。我知道我还没有指定我的公司使用什么以及所有的配置(事实上,如果我这样做的话,问题会变得太大),但我希望即使只是基本的问题,也有人能够提供帮助。

这是一个Kotlin编译器错误:参数列表没有针对使用
@Target(FIELD)的Java注释进行分析
关于Kotlin酒店


有关此问题的更新,请关注此问题。

我无法使用最新Kotlin插件的2020.3.1预览版本复制此问题。你能提供一个示例项目吗?未能从示例代码中复制,但看起来像这样的错误:@AlexeyBelkov是的,就是这样。有一点不同的是,我的注释没有
@Target(FIELD)
,但仔细检查后,我需要添加它以引起错误。我会更新这个问题来考虑这个问题。此外,我将
scope
属性更改为一个不存在的属性,如bug中所述,并且它确实可以编译。如果你想发布你的答案,我很乐意接受!