Como resolver InaccessibleObjectException (“Não é possível tornar {member} acessível: o módulo {A} não 'abre {package}' para {B}”) no Java 9?

Essa exceção ocorre em uma ampla variedade de cenários ao executar um aplicativo no Java 9. Certas bibliotecas e estruturas (Spring, Hibernate, JAXB) são particularmente propensas a isso. Aqui está um exemplo do Javassist:

java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @1941a8ff
    at java.base/jdk.internal.reflect.Reflection.throwInaccessibleObjectException(Reflection.java:427)
    at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:201)
    at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:192)
    at java.base/java.lang.reflect.Method.setAccessible(Method.java:186)
    at javassist.util.proxy.SecurityActions.setAccessible(SecurityActions.java:102)
    at javassist.util.proxy.FactoryHelper.toClass2(FactoryHelper.java:180)
    at javassist.util.proxy.FactoryHelper.toClass(FactoryHelper.java:163)
    at javassist.util.proxy.ProxyFactory.createClass3(ProxyFactory.java:501)
    at javassist.util.proxy.ProxyFactory.createClass2(ProxyFactory.java:486)
    at javassist.util.proxy.ProxyFactory.createClass1(ProxyFactory.java:422)
    at javassist.util.proxy.ProxyFactory.createClass(ProxyFactory.java:394)

A mensagem diz:

Não é possível tornar java.lang.Class final protegido java.lang.ClassLoader.defineClass (java.lang.String, byte [], int, int, java.security.ProtectionDomain) lança java.lang.ClassFormatError acessível: módulo java.base não "abre java.lang" para o módulo sem nome @ 1941a8ff

O que pode ser feito para evitar a exceção e o programa ser executado com êxito?

questionAnswers(4)

yourAnswerToTheQuestion