Не удалось сделать поле статическим окончательным java.lang.invoke.MethodHandles$Lookup java.lang.invoke.Метод обрабатывает$Lookup.IMPL_LOOKUP

#oracle #spring-boot #openfeign #openjdk-17

Вопрос:

У меня есть клиент Spring для симуляции, который отправляет объект POJO на удаленную конечную точку с помощью POST, и запуск моего приложения завершается неудачно с приведенными ниже исключениями.

java.lang.размышляйте.Исключение InaccessibleObjectException: Не удается сделать поле статическим окончательным java.lang.invoke.MethodHandles$Lookup java.lang.invoke.MethodHandles$Lookup.IMPL_LOOKUP доступен: модуль java.base не «открывает java.lang.invoke» для неназванного модуля @420a85c4

 Below the dependencies I am using in my application.
java version: 17
spring boot version: 2.5.3
spring boot cloud version: 2020.0.3
spring boot starter openfeign version: 2.2.8.RELEASE

As recommended in  https://github.com/OpenFeign/feign/issues/935, I had tried
workaround solution: Adding this jvm option '--add-opens java.base/java.lang.invoke=ALL- 
UNNAMED' worked. 
 

Любые другие альтернативные предложения, отличные от аргумента jvm, приветствуются.

Комментарии:

1. Я столкнулся с той же проблемой в открытом JDK 17, используя клиент Spring для симуляции

Ответ №1:

Принудительно установите версию OpenFeign по крайней мере до 11.7, что позволит решить эту проблему.

Если вы используете плагин управления зависимостями Spring, то вы можете сделать это следующим образом (пример Gradle):

     dependencyManagement {
        dependencies {
            dependencySet(group: 'io.github.openfeign', version: '11.7') {
                entry 'feign-core'
                entry 'feign-jackson'
                entry 'feign-slf4j'
                entry 'feign-soap'
                entry 'feign-jaxb'
            }
        }
    }
 

Ответ №2:

Для меня это сработало, чтобы добавить следующую опцию JVM:

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