Inspired by the discussion in https://github.com/spring-projects/spring-hateoas/issues/1806, we should improve the diagnostics for CGLIB ClassLoader issues on Java 9+.
For example, in certain circumstances the JDK will hint that the user needs to provide --add-opens=java.base/java.util.concurrent=ALL-UNNAMED as a command-line argument -- for example, when trying to dynamically subclass a type from the java.util.concurrent package.
However, due to the nature of Spring's CGLIB fork (specifically the changes in org.springframework.cglib.core.ReflectUtils.defineClass(...)) the proper fix would be to use --add-opens=java.base/java.lang=ALL-UNNAMED to open up the protected ClassLoader.defineClass(...) method used by Spring's CGLIB fork.
ReflectUtils could be updated to add this additional diagnostic information to the exception thrown by ReflectUtils.defineClass(...).