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 @1ba9117e
在將一個(gè) JDK 8 的項(xiàng)目轉(zhuǎn)移到 JDK 11 的運(yùn)行環(huán)境中時(shí),遇到了如下的問(wèn)題:
Caused by: java.lang.IllegalStateException: Failed to create adaptive instance: java.lang.IllegalStateException: Can't create adaptive extension interface org.apache.dubbo.rpc.Protocol, cause: 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 @1ba9117e
at org.apache.dubbo.common.extension.ExtensionLoader.getAdaptiveExtension(ExtensionLoader.java:592)
at org.apache.dubbo.config.ServiceConfig.<clinit>(ServiceConfig.java:118)
... 31 common frames omitted
Caused by: java.lang.IllegalStateException: Can't create adaptive extension interface org.apache.dubbo.rpc.Protocol, cause: 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 @1ba9117e
at org.apache.dubbo.common.extension.ExtensionLoader.createAdaptiveExtension(ExtensionLoader.java:1021)
at org.apache.dubbo.common.extension.ExtensionLoader.getAdaptiveExtension(ExtensionLoader.java:588)
... 32 common frames omitted
這是由于 JDK 8 中有關(guān)反射相關(guān)的功能自從 JDK 9 開(kāi)始就已經(jīng)被限制了,為了兼容原先的版本,需要在運(yùn)行項(xiàng)目時(shí)添加 --add-opens java.base/java.lang=ALL-UNNAMED
選項(xiàng)來(lái)開(kāi)啟這種默認(rèn)不被允許的行為。
如果是通過(guò) IDEA 來(lái)運(yùn)行項(xiàng)目,那么可以在 “Edit Configurations” 中 ——> “VM options” 輸入框中輸入該選項(xiàng)來(lái)完成,最終結(jié)果如下圖所示:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-594709.html
除了添加選項(xiàng)啟動(dòng)選項(xiàng)之外,由于原本的項(xiàng)目是在 JDK 8 的環(huán)境中運(yùn)行的,此時(shí)需要將運(yùn)行的 JDK 轉(zhuǎn)變?yōu)?JDK 11,具體做法(僅針對(duì) Maven 項(xiàng)目):將父 pom.xml
文件中的 <java.version>
標(biāo)簽中的 java 版本修改為需要運(yùn)行的版本,具體如下所示:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-594709.html
<properties>
<java.version>11</java.version>
</properties>
到了這里,關(guān)于Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!