如何修复类型不匹配:intellij 中的 @ExtendWith(SpringExtension::class) KClass -> Class?

how do I fix type mismatch: @ExtendWith(SpringExtension::class) KClass -> Class in intelij?

我正在使用 intellij 社区 2018.2 和 gradle 4.9 以及 kotlin 1.2.60

我刚刚从 start.spring.io 下载了 springboot2 包,支持 kotlin/gradle + web + h2 + jpa。我正在关注 spring 的 this 官方教程。

gradle buildgradle test 都可以在命令行中正常工作。

虽然在 intellij 中,我从 IDE 得到以下错误:

Error:(9, 13) Kotlin: Type mismatch: inferred type is    KClass<SpringExtension> but Class was expected

package org.ninrod.blog.blog

import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.ExtendWith
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.test.context.junit.jupiter.SpringExtension

@ExtendWith(SpringExtension::class) <-- RIGHT HERE
@SpringBootTest
class BlogApplicationTests {
    @Test
    fun contextLoads() {
    } 
}

这里是示例的完整源代码:link.

如何在 intellij 中解决这个问题,以便项目像在命令行中一样干净地编译?

ps:这里是intellij中问题的截图:

你所拥有的是正确的。我无法重现错误,如下面的屏幕截图所示。我能够 运行 你的测试没有问题。所以这是一个错误的错误。您可以通过从命令提示符的 IDEA 中通过 Gradle 确认项目构建来验证这一点。

尝试以下操作:

  1. 从 Gradle 工具 window,点击 "Refresh all Gradle projects" 按钮
    • 根据我的观察和经验,我认为这不会解决问题。但它很快就成功了,值得一试。
  2. IntelliJ IDEA 缓存可能已损坏。转到 *文件 > 使缓存无效/重新启动 *。在对话框 window 中,单击 "Invalidate and Restart"。 IDEA 重新启动并打开项目后,等待它完成重新索引项目(在底部查看进度)。重建索引完成后,查看问题是否已解决。
    • 我想这会解决问题。
  3. 如果上述方法不起作用,则可能是配置不正确。尝试重新创建 IDEA 项目。关闭项目,删除(或存档).idea 目录和任何 *.iml 文件。然后通过选择 build.gradle 文件导入项目。如果您对此不熟悉,请观看“Working with Gradle in IntelliJ IDEA" video on the IntelliJ IDEA documentation page
  4. 最后,请确保您使用的是 运行 两周前发布的最新版本的 IntelliJ IDEA (v2018.2)。这就是我运行宁。您使用了很多最新最好的技术(JUnit 5、Kotlin、Spring boot 2.x with Spring 5.x),所以旧版本的 IDEA 可能有问题。最后,即使您为我工作,我还是建议您在 gradle.properties
  5. 中升级到最新版本的 Kotlin (v1.2.60)

我没有收到错误,可以 运行 测试:

好吧,我完全卸载了所有关于 java 的东西,然后我从零安装了所有东西,删除了所有配置,所有东西。然后就成功了。