bezbos.
bezbos.

Reputation: 2374

Java (Spring Boot) - IllegalStateException: Unable to load cache item

We have a rather complex Spring Boot project and it works fine on Windows during development. However when we run the project on Ubuntu we get a bizzare exception

LOGBACK: No context given for c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@310623126
  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.2.8.RELEASE)
2020-07-08 12:56:42.860  INFO 6 --- [           main] redacted.Application            : Starting Application v0.0.1-SNAPSHOT on c72273bf4d02 with PID 6 (/home/plugin/app.jar started by root in /home/plugin)
2020-07-08 12:56:42.867  INFO 6 --- [           main] redacted.Application            : The following profiles are active: default
2020-07-08 12:56:44.745  INFO 6 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
2020-07-08 12:56:45.119  INFO 6 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 345ms. Found 13 JPA repository interfaces.
2020-07-08 12:56:46.089 ERROR 6 --- [           main] o.s.boot.SpringApplication               : Application run failed
java.lang.IllegalStateException: Unable to load cache item
        at org.springframework.cglib.core.internal.LoadingCache.createEntry(LoadingCache.java:79) ~[spring-core-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
        at org.springframework.cglib.core.internal.LoadingCache.get(LoadingCache.java:34) ~[spring-core-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
        at org.springframework.cglib.core.AbstractClassGenerator$ClassLoaderData.get(AbstractClassGenerator.java:134) ~[spring-core-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
        at org.springframework.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:319) ~[spring-core-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
        at org.springframework.cglib.proxy.Enhancer.createHelper(Enhancer.java:572) ~[spring-core-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
        at org.springframework.cglib.proxy.Enhancer.createClass(Enhancer.java:419) ~[spring-core-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
        at org.springframework.context.annotation.ConfigurationClassEnhancer.createClass(ConfigurationClassEnhancer.java:137) ~[spring-context-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
        at org.springframework.context.annotation.ConfigurationClassEnhancer.enhance(ConfigurationClassEnhancer.java:109) ~[spring-context-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
        at org.springframework.context.annotation.ConfigurationClassPostProcessor.enhanceConfigurationClasses(ConfigurationClassPostProcessor.java:423) ~[spring-context-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
        at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanFactory(ConfigurationClassPostProcessor.java:257) ~[spring-context-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
        at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:291) ~[spring-context-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
        at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:131) ~[spring-context-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
        at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:706) ~[spring-context-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:532) ~[spring-context-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
        at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:143) ~[spring-boot-2.3.0.RELEASE.jar!/:2.3.0.RELEASE]
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:758) [spring-boot-2.3.0.RELEASE.jar!/:2.3.0.RELEASE]
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:750) [spring-boot-2.3.0.RELEASE.jar!/:2.3.0.RELEASE]
        at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) [spring-boot-2.3.0.RELEASE.jar!/:2.3.0.RELEASE]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) [spring-boot-2.3.0.RELEASE.jar!/:2.3.0.RELEASE]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1237) [spring-boot-2.3.0.RELEASE.jar!/:2.3.0.RELEASE]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) [spring-boot-2.3.0.RELEASE.jar!/:2.3.0.RELEASE]
        at redacted.Application.main(Application.java:61) [classes!/:0.0.1-SNAPSHOT]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_111]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_111]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_111]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_111]
        at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49) [redacted-0.0.1-SNAPSHOT.jar:0.0.1-SNAPSHOT]
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:109) [redacted-0.0.1-SNAPSHOT.jar:0.0.1-SNAPSHOT]
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:58) [redacted-0.0.1-SNAPSHOT.jar:0.0.1-SNAPSHOT]
        at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:88) [redacted-0.0.1-SNAPSHOT.jar:0.0.1-SNAPSHOT]
Caused by: java.lang.ExceptionInInitializerError: null
        at java.lang.Class.forName0(Native Method) ~[na:1.8.0_111]
        at java.lang.Class.forName(Class.java:348) ~[na:1.8.0_111]
        at org.springframework.cglib.core.ReflectUtils.defineClass(ReflectUtils.java:571) ~[spring-core-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
        at org.springframework.cglib.core.AbstractClassGenerator.generate(AbstractClassGenerator.java:363) ~[spring-core-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
        at org.springframework.cglib.proxy.Enhancer.generate(Enhancer.java:585) ~[spring-core-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
        at org.springframework.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:110) ~[spring-core-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
        at org.springframework.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:108) ~[spring-core-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
        at org.springframework.cglib.core.internal.LoadingCache$2.call(LoadingCache.java:54) ~[spring-core-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[na:1.8.0_111]
        at org.springframework.cglib.core.internal.LoadingCache.createEntry(LoadingCache.java:61) ~[spring-core-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
        ... 29 common frames omitted
Caused by: java.lang.IllegalArgumentException: null
        at java.util.concurrent.ThreadPoolExecutor.<init>(ThreadPoolExecutor.java:1307) ~[na:1.8.0_111]
        at java.util.concurrent.ThreadPoolExecutor.<init>(ThreadPoolExecutor.java:1195) ~[na:1.8.0_111]
        at java.util.concurrent.Executors.newFixedThreadPool(Executors.java:89) ~[na:1.8.0_111]
        at redacted.Config.<clinit>(Config.java:43) ~[classes!/:0.0.1-SNAPSHOT]
        ... 39 common frames omitted

On Ubuntu we are using OpenJDK 11. It works on Windows with the same JDK, but it doesn't on Ubuntu. We also tried to run the project in a new Windows Sandbox instance and it worked flawlessly.

Upvotes: 4

Views: 40406

Answers (4)

Abhinav Swami
Abhinav Swami

Reputation: 1

To address the InaccessibleObjectException, you can add JVM options directly in IntelliJ IDEA to open up the necessary modules:

Go to Run > Edit Configurations....

Find your application's run configuration.

In the VM options field, add the necessary --add-opens option, for example:

--add-opens=java.base/java.lang=ALL-UNNAMED

Upvotes: 0

Ivan Polovyi
Ivan Polovyi

Reputation: 156

Check the Java version, I had the same error when I tried to run a project developed in Java 11 with Java 17.

Upvotes: 4

bezbos.
bezbos.

Reputation: 2374

The issue was caused by trying to create a thread pool with 0 threads. We have a development VPS with 1 thread and we had a line of code like this:

public static final Executor EXECUTOR = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() - 1);

This caused the exception. In hindsight the exception stack trace gave us an obvious clue at the bottom

at redacted.Config.<clinit>(Config.java:43)

It literally pointed to the exact line that faulted.

Another thing you should definitely do is update the apt-cache with sudo apt-get update command install the latest OpenJDK verison.

Upvotes: 1

exe
exe

Reputation: 19

Am not sure, but i think the problem caused by spring-core dependency. Can you try to remove spring-core dependency from pom.xml file and try to run it again.

Upvotes: 1

Related Questions