项目场景:
使用nginx扩展:nginx-clojure来实现API网关的功能
问题描述
启动报错
2024/03/12 08:37:10 [error] 18204#14960: nginx-clojure:can not initialize jvm memory util
2024/03/12 08:37:10 [error] 18204#14960: jvm start times 8
java.lang.AssertionError: java.lang.reflect.InaccessibleObjectException: Unable to make static java.lang.ThreadLocal$ThreadLocalMap java.lang.ThreadLocal.createInheritedMap(java.lang.ThreadLocal$ThreadLocalMap) accessible: module java.base does not "opens java.lang" to unnamed module @edf4efb
at nginx.clojure.HackUtils.<clinit>(HackUtils.java:118)
at nginx.clojure.NginxClojureRT.<clinit>(NginxClojureRT.java:55)
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make static java.lang.ThreadLocal$ThreadLocalMap java.lang.ThreadLocal.createInheritedMap(java.lang.ThreadLocal$ThreadLocalMap) accessible: module java.base does not "opens java.lang" to unnamed module @edf4efb
at java.base/java.lang.reflect.AccessibleObject.throwInaccessibleObjectException(AccessibleObject.java:391)
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:367)
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:315)
at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:203)
at java.base/java.lang.reflect.Method.setAccessible(Method.java:197)
at nginx.clojure.HackUtils.<clinit>(HackUtils.java:102)
... 1 more
原因分析:
本地JDK版本(JDK21)高于nginx-clojure(0.6.0)所依赖的JDK版本(JDK1.8)
解决方案:
临时解决方法:切回JDK1.8;
静等更高版本的nginx-clojure适配JDK21