Skip to content

Wrong entry may be loaded from multi-release jar files resulting in a NoClassDefFoundError #15981

@karesti

Description

@karesti

When we build a simple application using Infinispan 9.4.4.Final or above and Spring-Boot 2.1.x.RELEASE, we package it with spring-boot:repackage and then run it using java -jar in Java 11, the application won't start:

Caused by: java.lang.NoClassDefFoundError: org/infinispan/commons/util/FastCopyHashMap$Values (wrong name: org/infinispan/commons/dataconversion/BinaryEncoder)
	at java.base/java.lang.ClassLoader.defineClass1(Native Method) ~[na:na]
	at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016) ~[na:na]
	at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174) ~[na:na]
	at java.base/java.net.URLClassLoader.defineClass(URLClassLoader.java:550) ~[na:na]
	at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:458) ~[na:na]
	at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:452) ~[na:na]
	at java.base/java.security.AccessController.doPrivileged(Native Method) ~[na:na]
	at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:451) ~[na:na]
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:588) ~[na:na]
	at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:93) ~[infinispan-spring-boot-sample-embedded-2.1.4-SNAPSHOT.jar:na]
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) ~[na:na]
	at org.infinispan.factories.EncoderRegistryFactory.construct(EncoderRegistryFactory.java:48) ~[infinispan-core-9.4.7.Final.jar!/:9.4.7.Final]
	at org.infinispan.factories.impl.BasicComponentRegistryImpl.instantiateWrapper(BasicComponentRegistryImpl.java:137) ~[infinispan-core-9.4.7.Final.jar!/:9.4.7.Final]
	... 137 common frames omitted

Reproducer: https://github.com/ben-schroeder/infinispan-ncdfe
Our Issue for further details: https://issues.jboss.org/browse/ISPN-9977
StackOverflow question : https://stackoverflow.com/questions/54635814/why-does-infinispan-fail-with-noclassdeffounderror-on-spring-boot-java-11

The infinispan-commons 9.4.3.Final jar seems to work because this jar is not a multi-release jar (and should be). In any case, Spring Boot 2.1.x and Spring 5 are supported from version 9.4.4.Final.

Metadata

Metadata

Assignees

Labels

type: regressionA regression from a previous release

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions