java - Spring 启动应用程序。使用 Intellij 运行会导致在相同的类上出现 ClassCastException

标签 java spring-boot exception intellij-idea classloader

我有一个 Spring Boot 应用程序,它使用 Jetty 作为 Web 服务器,我还使用 gradle 将应用程序构建为可执行的 .jar。

当我使用 IntelliJ 运行或调试选项运行应用程序时,我突然在其中一个 Controller 内出现类转换异常:

ClassCastException: com.test.matan.GenericParameter can not be cast into com.test.matan.GenericParameter

正如你所看到的,它是同一个类。这个类是我开发的应用程序依赖模块的一部分。

当我使用可执行 jar 运行我的应用程序时:“java -jar my-app.jar”,相同过程工作得很好,没有异常,并且转换按预期工作正常。

我得出的结论是 IntelliJ 负责这个奇怪的“bug”,但我不明白如何修复它。直接从 IDE 运行应用程序更加方便和容易。

有什么想法吗?赞赏!

编辑:我使用的是IntelliJ 2017,由于工作网络限制,暂时无法更新。

最佳答案

发生这种情况是因为 spring-boot-devtools 有一个类加载器,但 IntelliJ 有它自己的类加载器。从 pom.xml 中删除 spring-boot-devtools 解决了这个问题。 您也可以将其从项目的库列表中删除:

Project Settings -> Libraries -> find spring-boot-devtools -> delete

关于java - Spring 启动应用程序。使用 Intellij 运行会导致在相同的类上出现 ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57134698/

相关文章:

java - 如何在 Grails 或 Hibernate 中缩短它

java - 如何在 Java 中构建 SPARQL 查询?

java - 带有 resteasy 的 Spring 启动 - "could not find the type for bean named requestMappingHandlerMapping"错误

java - 找到请求类型 [java.lang.Long] 的 HttpMessageConverter

spring - 为什么 application.properties 中的属性在 Spring Boot 应用程序的 Junit 测试中不可用?

java - gradle 中的 mockito 不适用于 java 项目

java - 如何将 Unicode 无穷大符号转换为字符串

Java HTTP connection.getInputStream() 从异常中获取响应

hadoop - 启动Hive CLI时出现奇怪的ServiceConfigurationError

android.content.res.Resources$NotFoundException : String resource ID Fatal Exception in Main