Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

improve UnsupportedClassVersionError error message #30688

Open
tam512 opened this issue Jan 31, 2025 · 1 comment
Open

improve UnsupportedClassVersionError error message #30688

tam512 opened this issue Jan 31, 2025 · 1 comment
Assignees
Labels
serviceability Label used to track serviceability related issues SVT

Comments

@tam512
Copy link

tam512 commented Jan 31, 2025

Test Liberty InstantOn 25.0.0.1 Java11 with sessionCache-1.0 on OCP and use RedHat Data Grid operator version 8.5.4. I got the following error when deploy the application image to OCP:

[1/31/25, 0:17:33:849 UTC] 00000037 io.openliberty.jcache.internal.CachingProviderService        E CWLJC0004E: The cacheManager[CacheManager]//io.openliberty.jcache.cachingprovider(cachingProvider)[default-0] caching provider failed to load. java.lang.UnsupportedClassVersionError: JVMCFRE199E bad major version 61.0 of class=org/infinispan/jcache/remote/JCachingProvider, the maximum supported major version is 55.0; offset=6
	at java.base/java.lang.ClassLoader.defineClassImpl(Native Method)
	at java.base/java.lang.ClassLoader.defineClassInternal(ClassLoader.java:467)
	at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:428)
	at com.ibm.ws.classloading.internal.AppClassLoader.definePackageAndClass(AppClassLoader.java:435)
	at com.ibm.ws.classloading.internal.AppClassLoader.findClass(AppClassLoader.java:333)
	at com.ibm.ws.classloading.internal.AppClassLoader.findOrDelegateLoadClass(AppClassLoader.java:705)
	at com.ibm.ws.classloading.internal.AppClassLoader.loadClass(AppClassLoader.java:584)
	at com.ibm.ws.classloading.internal.LibertyLoader.loadClassNoException(LibertyLoader.java:53)
	at com.ibm.ws.classloading.internal.UnifiedClassLoader.findClass(UnifiedClassLoader.java:151)
	at com.ibm.ws.classloading.internal.UnifiedClassLoader.loadClass0(UnifiedClassLoader.java:141)
	at com.ibm.ws.classloading.internal.UnifiedClassLoader$Delegation.loadClass(UnifiedClassLoader.java:87)
	at com.ibm.ws.classloading.internal.UnifiedClassLoader.loadClass(UnifiedClassLoader.java:106)
	at java.base/java.lang.ClassLoader.loadClassHelper(ClassLoader.java:1165)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:1092)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:1075)
	at java.base/java.lang.Class.forNameImpl(Native Method)
	at java.base/java.lang.Class.forName(Class.java:418)
	at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.nextProviderClass(ServiceLoader.java:1224)
	at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNextService(ServiceLoader.java:1235)
	at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNext(ServiceLoader.java:1284)
	at java.base/java.util.ServiceLoader$2.hasNext(ServiceLoader.java:1319)
	at java.base/java.util.ServiceLoader$3.hasNext(ServiceLoader.java:1404)
	at javax.cache.Caching$CachingProviderRegistry$1.run(Caching.java:448)
	at javax.cache.Caching$CachingProviderRegistry$1.run(Caching.java:442)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:690)
	at javax.cache.Caching$CachingProviderRegistry.getCachingProviders(Caching.java:442)
	at javax.cache.Caching$CachingProviderRegistry.getCachingProvider(Caching.java:529)
	at javax.cache.Caching.getCachingProvider(Caching.java:247)
	at io.openliberty.jcache.internal.CachingProviderService$1.call(CachingProviderService.java:92)
	at io.openliberty.checkpoint.spi.CheckpointPhase$2.restore(CheckpointPhase.java:385)
	at io.openliberty.checkpoint.spi.CheckpointPhase$StaticCheckpointHook.restore(CheckpointPhase.java:590)
	at io.openliberty.checkpoint.internal.CheckpointImpl.callHooks(CheckpointImpl.java:575)
	at io.openliberty.checkpoint.internal.CheckpointImpl.restore(CheckpointImpl.java:611)
	at io.openliberty.checkpoint.internal.CheckpointImpl.checkpoint(CheckpointImpl.java:413)
	at io.openliberty.checkpoint.internal.CheckpointImpl.checkpointOrExitOnFailure(CheckpointImpl.java:301)
	at io.openliberty.checkpoint.internal.CheckpointImpl.check(CheckpointImpl.java:295)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
	at com.ibm.ws.kernel.feature.internal.FeatureManager.checkServerReady(FeatureManager.java:868)
	at com.ibm.ws.kernel.feature.internal.FeatureManager.update(FeatureManager.java:829)
	at com.ibm.ws.kernel.feature.internal.FeatureManager.processFeatureChanges(FeatureManager.java:931)
	at com.ibm.ws.kernel.feature.internal.FeatureManager$1.run(FeatureManager.java:714)
	at com.ibm.ws.threading.internal.ExecutorServiceImpl$RunnableWrapper.run(ExecutorServiceImpl.java:298)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:839)

Per RH Data Grid 8.5 release notes, The minimum supported Java version for RHDG 8.5 is Java 17

Please improve the error message to help users fix the problem

@tam512 tam512 added serviceability Label used to track serviceability related issues SVT labels Jan 31, 2025
@tjwatson
Copy link
Member

See https://docs.oracle.com/javase/specs/jvms/se21/html/jvms-4.html

We could look at the class byte[] after defineClass fails to lookup the classes minor_version and major_version to determine the Java level that is expected for the class.

@SmithaSubbarao SmithaSubbarao self-assigned this Feb 12, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
serviceability Label used to track serviceability related issues SVT
Projects
None yet
Development

No branches or pull requests

3 participants