如何修复类型不匹配: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 build
和 gradle 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 确认项目构建来验证这一点。
尝试以下操作:
- 从 Gradle 工具 window,点击 "Refresh all Gradle projects" 按钮
- 根据我的观察和经验,我认为这不会解决问题。但它很快就成功了,值得一试。
- IntelliJ IDEA 缓存可能已损坏。转到 *文件 > 使缓存无效/重新启动 *。在对话框 window 中,单击 "Invalidate and Restart"。 IDEA 重新启动并打开项目后,等待它完成重新索引项目(在底部查看进度)。重建索引完成后,查看问题是否已解决。
- 我想这会解决问题。
- 如果上述方法不起作用,则可能是配置不正确。尝试重新创建 IDEA 项目。关闭项目,删除(或存档)
.idea
目录和任何 *.iml
文件。然后通过选择 build.gradle
文件导入项目。如果您对此不熟悉,请观看“Working with Gradle in IntelliJ IDEA" video on the IntelliJ IDEA documentation page
- 最后,请确保您使用的是 运行 两周前发布的最新版本的 IntelliJ IDEA (v2018.2)。这就是我运行宁。您使用了很多最新最好的技术(JUnit 5、Kotlin、Spring boot 2.x with Spring 5.x),所以旧版本的 IDEA 可能有问题。最后,即使您为我工作,我还是建议您在 gradle.properties
中升级到最新版本的 Kotlin (v1.2.60)
我没有收到错误,可以 运行 测试:
好吧,我完全卸载了所有关于 java 的东西,然后我从零安装了所有东西,删除了所有配置,所有东西。然后就成功了。
我正在使用 intellij 社区 2018.2 和 gradle 4.9 以及 kotlin 1.2.60
我刚刚从 start.spring.io 下载了 springboot2 包,支持 kotlin/gradle + web + h2 + jpa。我正在关注 spring 的 this 官方教程。
gradle build
和 gradle 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 确认项目构建来验证这一点。
尝试以下操作:
- 从 Gradle 工具 window,点击 "Refresh all Gradle projects" 按钮
- 根据我的观察和经验,我认为这不会解决问题。但它很快就成功了,值得一试。
- IntelliJ IDEA 缓存可能已损坏。转到 *文件 > 使缓存无效/重新启动 *。在对话框 window 中,单击 "Invalidate and Restart"。 IDEA 重新启动并打开项目后,等待它完成重新索引项目(在底部查看进度)。重建索引完成后,查看问题是否已解决。
- 我想这会解决问题。
- 如果上述方法不起作用,则可能是配置不正确。尝试重新创建 IDEA 项目。关闭项目,删除(或存档)
.idea
目录和任何*.iml
文件。然后通过选择build.gradle
文件导入项目。如果您对此不熟悉,请观看“Working with Gradle in IntelliJ IDEA" video on the IntelliJ IDEA documentation page - 最后,请确保您使用的是 运行 两周前发布的最新版本的 IntelliJ IDEA (v2018.2)。这就是我运行宁。您使用了很多最新最好的技术(JUnit 5、Kotlin、Spring boot 2.x with Spring 5.x),所以旧版本的 IDEA 可能有问题。最后,即使您为我工作,我还是建议您在 gradle.properties 中升级到最新版本的 Kotlin (v1.2.60)
我没有收到错误,可以 运行 测试:
好吧,我完全卸载了所有关于 java 的东西,然后我从零安装了所有东西,删除了所有配置,所有东西。然后就成功了。