4

我们有一个更大的 Spring Boot 应用程序,它会导致以下异常:

    java.lang.ClassCastException: class jpa.XVersion cannot be cast to class jpa.XVersion (jpa.XVersion is in unnamed module of loader 'app'; jpa.XVersion is in unnamed module of loader org.springframework.boot.devtools.restart.classloader.RestartClassLoader @671ef14f)
    at y.package.abc(XService.java:70)
    at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:75)
    at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)

从 IDEA IntelliJ 内部与 JPA 类的关系开始。

该应用程序在从普通命令行启动时运行良好。

在我们移除依赖之后

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-devtools</artifactId>
  <optional>true</optional>
</dependency>

在 IDE 内执行工作正常,没有任何问题。

我们正在使用:

  • Idea IntelliJ 2020.1.2
  • Spring Boot 版本 2.3.1,
  • JDK 11.0.7(采用 Open JDK),
  • 阿帕奇 Maven 3.6.3

有人已经观察到这种问题了吗?是否存在不同的解决方案然后消除依赖关系?

4

2 回答 2

1

禁用 spring 开发工具重启

spring.devtools.restart.enabled您可以使用设置为 的属性禁用重新启动功能false。在大多数情况下,您可以在application.properties中设置它(这仍将初始化重新启动类加载器,但不会监视文件更改)。

如果您需要完全禁用重新启动支持,例如,因为它不适用于特定库,则需要在调用之前设置系统属性SpringApplication.run(…​)

例如:

 public static void main(final String[] args) {
    System.setProperty("spring.devtools.restart.enabled", "false");
    SpringApplication.run(Application.class, args);
}

参考弹簧文档

于 2021-03-31T09:26:48.243 回答
0

我删除了下面的依赖项,它起作用了。

org.springframework.boot spring-boot-devtools 运行时 true
于 2020-10-26T13:46:19.830 回答