IntelliJ/Kotlin 升级导致 "Incompatible types" 错误?

IntelliJ/Kotlin upgrade causing "Incompatible types" error?

几天前我将 IntelliJ 和 kotlin 更新到了最新版本。我 假设 是这两个操作之一导致了我的问题。 IntelliJ 开始突出显示我的 QueryCriteria 语句中以前没有突出显示的错误:

QueryCriteria myQueryCriteria = new QueryCriteria.LinearStateQueryCriteria(null, singletonList(uuid), null, Vault.StateStatus.ALL);

错误:

Incompatible types. Found: 'net.corda.core.node.services.vault.QueryCriteria.LinearStateQueryCriteria', required: 'net.corda.core.node.services.vault.QueryCriteria'

我一直使用这种语法,因为我随后将 myQueryCriteria 传递到查询中:

Vault.Page<myContractState> page = mockNodeA.getServices().getVaultService().queryBy(myContractState.class, myQueryCriteria);

错误并没有阻止我从 运行 进行的测试。我已经尝试更改几个设置,但后来意识到我最好在让问题变得更糟之前询问更熟悉 java/kotlin/intelliJ/Corda 的人。

目前支持的Kotlin版本是1.2.71(可以查看doc or the source code of Corda on github (github.com/corda/corda/constant.properties)。

建议您降级Kotlin版本

快速历史:

  • 最初安装的 IntelliJ 2018.3 到 2019.3 – 没有问题
  • 升级到 IntelliJ 2020.3.2 – 没问题
  • 已更新至 IntelliJ 2021.1 – 出现错误

我最终回到了 IntelliJ 2020.3.3 以停止错误

文档清楚地说:

"安装IntelliJ IDEA社区版。Corda支持IntelliJ IDEA版本2017.x、2018.x、2019.x和2020.x;以及Kotlin插件版本 1.2.71."

...所以当我更新到2021.1时,我已经超出了推荐版本。当 2020.3.2 提示我更新时,我没有意识到它会把我带到 2021.1(我的错)。

背景: 我对 IntelliJ/Java 还是很陌生,但我尝试了所有我能想到的方法来使错误消失,但无法修复它。

Kotlin 插件:

  • 2021.1 不让我安装 Kotlin 插件 1.2.71,因为它不受支持。
  • IntelliJ 2019.3 Kotlin 插件 1.3.61-release-IJ2019.3-1 = 没有错误
  • IntelliJ 2020.3 Kotlin 插件 203-1.4.10-release-IJ7717.8 = 无错误
  • IntelliJ 2021.1 Kotlin 插件 211-1.4.32-release-IJ6693.72 = 错误

我尝试将 Kotlin 插件降级到旧版本,但它总是会忽略旧插件并继续使用新插件。

我尝试更改检查,但错误似乎不是来自检查。

在构建、执行、部署下更改 Kotlin 编译器没有任何效果。

这似乎是 Intellij IDEA 中的编译器错误。我和你有同样的问题,使用从 Corda 的存储库下载的代码。

  • IntelliJ IDEA 2021.3.1(终极版)=错误
  • IntelliJ IDEA 2021.3.1(社区版)=错误
  • IntelliJ IDEA 2020.3.4(终极版)= 有效!