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

Posted

技术标签:

【中文标题】如何修复类型不匹配:@ExtendWith(SpringExtension::class) Class -> Class in intellij?【英文标题】:how do I fix type mismatch: @ExtendWith(SpringExtension::class) KClass -> Class in intelij? 【发布时间】:2019-01-12 19:16:12 【问题描述】:

我正在使用 intellij community 2018.2 和 gradle 4.9 和 kotlin 1.2.60

我刚刚从 start.spring.io 下载了一个带有 kotlin/gradle 支持 + web + h2 + jpa 的 springboot2 包。我正在关注春季的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中问题的截图:

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

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

尝试以下方法:

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

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

【讨论】:

奇怪的是,我执行了所有 4 个步骤,但仍然出现错误。我可以从 IDE 运行测试也很奇怪,但我还是得到了编译错误。我在 intellij 问题跟踪器中填写了一个错误:youtrack.jetbrains.com/issue/IDEA-196785

以上是关于如何修复类型不匹配:@ExtendWith(SpringExtension::class) Class -> Class in intellij?的主要内容,如果未能解决你的问题,请参考以下文章

切换到 64 位 Excel 后如何修复 VBA“类型不匹配”错误

如何修复ruby中返回的不匹配对象类型?

仅在SOAP客户端上修复-内容类型不匹配

当 int 类型的符号不匹配时的 g++ 错误消息

@ExtendWith(SpringExtension.class) 不工作

如何修复“TS2769:没有超载匹配此调用”