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

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

java.lang.reflect.InaccessibleObjectException: невозможно сделать поле static final 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, приветствуются.

4 ответа

Установите версию OpenFeign не ниже 11.7, в которой эта проблема решена.

Если вы используете плагин Spring Dependency Management, вы можете сделать это так (пример 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'
            }
        }
    }

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

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

У меня такая же ошибка, когда я объявляю метод по умолчанию (метод с реализацией) в классе интерфейса, отмеченном. Я просто удаляю метод по умолчанию, и ошибка исчезла

Для JDK 9+, если вы используете параметры JVM для устранения проблемы, добавьте еще один =в опции JVM: например

      --add-opens=java.base/java.lang.invoke=ALL-UNNAMED
Другие вопросы по тегам