java.lang.ClassCastException: class ... is in unnamed module of loader 'app' - spring-boot-dev-tools

Viewed 18829

We have a larger Spring boot application which causes the following exeception:

    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)

while starting from within IDEA IntelliJ in relationship with JPA classes.

The application works fine while starting from plain command line.

After we have removed the dependency

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

The execution from within the IDE works fine without any issues.

We are using:

  • Idea IntelliJ 2020.1.2
  • Spring Boot Version 2.3.1,
  • JDK 11.0.7 (Adopt Open JDK),
  • Apache Maven 3.6.3

Does someone has already observed that kind of issue? Does exist a different solution then removing the dependency?

2 Answers

I removed the dependency below and it worked.

org.springframework.boot spring-boot-devtools runtime true

Disable the spring dev tools restart

You can disable the restart feature using the spring.devtools.restart.enabled property set to false. In most cases you can set this in your application.properties (this will still initialize the restart classloader but it won’t watch for file changes).

If you need to completely disable restart support, for example, because it doesn’t work with a specific library, you need to set a System property before calling SpringApplication.run(…​).

For example:

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

Reference spring docs

Related