6

我有一个 Spring Feign 客户端,它使用 POST 将 POJO 对象发送到远程端点,并且我的应用程序启动失败并出现以下异常。

java.lang.reflect.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 参数之外的任何其他替代建议。

4

2 回答 2

2

强制 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'
            }
        }
    }
于 2021-11-13T19:24:20.080 回答
1

对我来说,它添加了以下 JVM 选项:

--add-opens java.base/java.lang.invoke=ALL-UNNAMED
于 2021-10-14T11:25:53.233 回答