jdk升级17 项目报错java.lang.reflect.InaccessibleObjectException

cglib Java升级后,报错java.lang.reflect.InaccessibleObjectException/java.lang.ClassFormatError 1. java.lang.IllegalAccessException: module java.base does not open java.lang to unnamed module @7dc36524 2. cglib代理 3. spring cglibs 阅读详情
AI摘要

本文解决从Java11升级到Java17后MyBatis查询出现InaccessibleObjectException的问题,介绍如何通过添加JVM参数或修改MANIFEST.MF文件解决访问serialVersionUID字段的权限问题。

java11 升级到java17 项目启动正常,执行mybatis 查询的时候报错

根据报错信息怀疑mybatis xml 配置问题,发现其实没有问题,jdk11 的时候正常启动

reating a new SqlSession
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@3c88e19e] was not registered for synchronization because synchronization is not active
JDBC Connection [org.apache.shardingsphere.shardingjdbc.jdbc.core.connection.ShardingConnection@5b6098ff] will not be managed by Spring
==>  Preparing: select id, user_id as userId, order_id as orderId, remark, create_time as createTime from t_order where order_id=?
==> Parameters: 12(Long)
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@3c88e19e]
2021-09-20 22:47:33.431 ERROR 19452 --- [nio-9090-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: java.lang.reflect.InaccessibleObjectException: Unable to make field private static final long java.lang.Number.serialVersionUID accessible: module java.base does not "opens java.lang" to unnamed module @708f5957
### The error may exist in file [D:\java\IdeaProjects\sharding-demo\target\classes\mapper\OrderMapper.xml]
### The error may involve defaultParameterMap
### The error occurred while setting parameters
### SQL: select             id,             user_id as userId,             order_id as orderId,             remark,             create_time as createTime         from t_order         where order_id=?
### Cause: java.lang.reflect.InaccessibleObjectException: Unable to make field private static final long java.lang.Number.serialVersionUID accessible: module java.base does not "opens java.lang" to unnamed module @708f5957] with root cause

java.lang.reflect.InaccessibleObjectException: Unable to make field private static final long java.lang.Number.serialVersionUID accessible: module java.base does not "opens java.lang" to unnamed module @708f5957
	at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354) ~[na:na]
	at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297) ~[na:na]
	at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:178) ~[na:na]
	at java.base/java.lang.reflect.AccessibleObject.setAccessible(AccessibleObject.java:130) ~[na:na]
	at org.codehaus.groovy.reflection.CachedClass$1$1.run(CachedClass.java:55) ~[groovy-2.4.5-indy.jar:2.4.5]
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:318) ~[na:na]
	at org.codehaus.groovy.reflection.CachedClass$1.initValue(CachedClass.java:50) ~[groovy-2.4.5-indy.jar:2.4.5]
	at org.codehaus.groovy.reflection.CachedClass$1.initValue(CachedClass.java:48) ~[groovy-2.4.5-indy.jar:2.4.5]
	at org.codehaus.groovy.util.LazyReference.getLocked(LazyReference.java:49) ~[groovy-2.4.5-indy.jar:2.4.5]
	at org.codehaus.groovy.util.LazyReference.get(LazyReference.java:36) ~[groovy-2.4.5-indy.jar:2.4.5]
	at org.codehaus.groovy.reflection.CachedClass.getFields(CachedClass.java:264) ~[groovy-2.4.5-indy.jar:2.4.5]
	at groovy.lang.MetaClassImpl.addFields(MetaClassImpl.java:2377) ~[groovy-2.4.5-indy.jar:2.4.5]
	at groovy.lang.MetaClassImpl.inheritFields(MetaClassImpl.java:2372) ~[groovy-2.4.5-indy.jar:2.4.5]
	at groovy.lang.MetaClassImpl.setupProperties(MetaClassImpl.java:2259) ~[groovy-2.4.5-indy.jar:2.4.5]
	at groovy.lang.MetaClassImpl.addProperties(MetaClassImpl.java:3302) ~[groovy-2.4.5-indy.jar:2.4.5]
	at groovy.lang.MetaClassImpl.initialize(MetaClassImpl.java:3266) ~[groovy-2.4.5-indy.jar:2.4.5]
	at org.codehaus.groovy.reflection.ClassInfo.getMetaClassUnderLock(ClassInfo.java:254) ~[groovy-2.4.5-indy.jar:2.4.5]
	at org.codehaus.groovy.reflection.ClassInfo.getMetaClass(ClassInfo.java:285) ~[groovy-2.4.5-indy.jar:2.4.5]
	at org.codehaus.groovy.reflection.ClassInfo.getMetaClass(ClassInfo.java:295) ~[groovy-2.4.5-indy.jar:2.4.5]
	at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.getMetaClass(MetaClassRegistryImpl.java:261) ~[groovy-2.4.5-indy.jar:2.4.5]
	at org.codehaus.groovy.runtime.InvokerHelper.getMetaClass(InvokerHelper.java:873) ~[groovy-2.4.5-indy.jar:2.4.5]
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.createPojoSite(CallSiteArray.java:125) ~[groovy-2.4.5-indy.jar:2.4.5]
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallSite(CallSiteArray.java:166) ~[groovy-2.4.5-indy.jar:2.4.5]
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) ~[groovy-2.4.5-indy.jar:2.4.5]
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) ~[groovy-2.4.5-indy.jar:2.4.5]
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125) ~[groovy-2.4.5-indy.jar:2.4.5]
	at Script6$_run_closure1.doCall(Script6.groovy:1) ~[na:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
	at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
	at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93) ~[groovy-2.4.5-indy.jar:2.4.5]
	at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325) ~[groovy-2.4.5-indy.jar:2.4.5]
	at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:294) ~[groovy-2.4.5-indy.jar:2.4.5]
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1019) ~[groovy-2.4.5-indy.jar:2.4.5]
	at groovy.lang.Closure.call(Closure.java:426) ~[groovy-2.4.5-indy.jar:2.4.5]
	at groovy.lang.Closure.call(Closure.java:420) ~[groovy-2.4.5-indy.jar:2.4.5]
	at org.apache.shardingsphere.core.strategy.route.inline.InlineShardingStrategy.execute(InlineShardingStrategy.java:94) ~[sharding-core-common-4.1.1.jar:4.1.1]
	at org.apache.shardingsphere.core.strategy.route.inline.InlineShardingStrategy.doSharding(InlineShardingStrategy.java:76) ~[sharding-core-common-4.1.1.jar:4.1.1]
	at org.apache.shardingsphere.core.strategy.route.inline.InlineShardingStrategy.doSharding(InlineShardingStrategy.java:63) ~[sharding-core-common-4.1.1.jar:4.1.1]
	at org.apache.shardingsphere.sharding.route.engine.type.standard.ShardingStandardRoutingEngine.routeTables(ShardingStandardRoutingEngine.java:214) ~[sharding-core-route-4.1.1.jar:4.1.1]
	at org.apache.shardingsphere.sharding.route.engine.type.standard.ShardingStandardRoutingEngine.route0(ShardingStandardRoutingEngine.java:195) ~[sharding-core-route-4.1.1.jar:4.1.1]
	at org.apache.shardingsphere.sharding.route.engine.type.standard.ShardingStandardRoutingEngine.routeByShardingConditionsWithCondition(ShardingStandardRoutingEngine.java:121) ~[sharding-core-route-4.1.1.jar:4.1.1]
	at org.apache.shardingsphere.sharding.route.engine.type.standard.ShardingStandardRoutingEngine.routeByShardingConditions(ShardingStandardRoutingEngine.java:115) ~[sharding-core-route-4.1.1.jar:4.1.1]
	at org.apache.shardingsphere.sharding.route.engine.type.standard.ShardingStandardRoutingEngine.getDataNodes(ShardingStandardRoutingEngine.java:96) ~[sharding-core-route-4.1.1.jar:4.1.1]
	at org.apache.shardingsphere.sharding.route.engine.type.standard.ShardingStandardRoutingEngine.route(ShardingStandardRoutingEngine.java:74) ~[sharding-core-route-4.1.1.jar:4.1.1]
	at org.apache.shardingsphere.sharding.route.engine.ShardingRouteDecorator.decorate(ShardingRouteDecorator.java:69) ~[sharding-core-route-4.1.1.jar:4.1.1]
	at org.apache.shardingsphere.sharding.route.engine.ShardingRouteDecorator.decorate(ShardingRouteDecorator.java:53) ~[sharding-core-route-4.1.1.jar:4.1.1]
	at org.apache.shardingsphere.underlying.route.DataNodeRouter.executeRoute(DataNodeRouter.java:91) ~[shardingsphere-route-4.1.1.jar:4.1.1]
	at org.apache.shardingsphere.underlying.route.DataNodeRouter.route(DataNodeRouter.java:76) ~[shardingsphere-route-4.1.1.jar:4.1.1]
	at org.apache.shardingsphere.underlying.pluggble.prepare.PreparedQueryPrepareEngine.route(PreparedQueryPrepareEngine.java:54) ~[shardingsphere-pluggable-4.1.1.jar:4.1.1]
	at org.apache.shardingsphere.underlying.pluggble.prepare.BasePrepareEngine.executeRoute(BasePrepareEngine.java:96) ~[shardingsphere-pluggable-4.1.1.jar:4.1.1]
	at org.apache.shardingsphere.underlying.pluggble.prepare.BasePrepareEngine.prepare(BasePrepareEngine.java:83) ~[shardingsphere-pluggable-4.1.1.jar:4.1.1]
	at org.apache.shardingsphere.shardingjdbc.jdbc.core.statement.ShardingPreparedStatement.prepare(ShardingPreparedStatement.java:183) ~[sharding-jdbc-core-4.1.1.jar:4.1.1]
	at org.apache.shardingsphere.shardingjdbc.jdbc.core.statement.ShardingPreparedStatement.execute(ShardingPreparedStatement.java:143) ~[sharding-jdbc-core-4.1.1.jar:4.1.1]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
	at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
	at org.apache.ibatis.logging.jdbc.PreparedStatementLogger.invoke(PreparedStatementLogger.java:59) ~[mybatis-3.5.7.jar:3.5.7]
	at jdk.proxy3/jdk.proxy3.$Proxy95.execute(Unknown Source) ~[na:na]
	at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:64) ~[mybatis-3.5.7.jar:3.5.7]
	at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:79) ~[mybatis-3.5.7.jar:3.5.7]
	at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:63) ~[mybatis-3.5.7.jar:3.5.7]
	at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:325) ~[mybatis-3.5.7.jar:3.5.7]
	at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156) ~[mybatis-3.5.7.jar:3.5.7]
	at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109) ~[mybatis-3.5.7.jar:3.5.7]
	at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:89) ~[mybatis-3.5.7.jar:3.5.7]
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:151) ~[mybatis-3.5.7.jar:3.5.7]
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:145) ~[mybatis-3.5.7.jar:3.5.7]
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:140) ~[mybatis-3.5.7.jar:3.5.7]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
	at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:427) ~[mybatis-spring-2.0.6.jar:2.0.6]
	at jdk.proxy2/jdk.proxy2.$Proxy65.selectList(Unknown Source) ~[na:na]
	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:224) ~[mybatis-spring-2.0.6.jar:2.0.6]
	at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:147) ~[mybatis-3.5.7.jar:3.5.7]
	at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:80) ~[mybatis-3.5.7.jar:3.5.7]
	at org.apache.ibatis.binding.MapperProxy$PlainMethodInvoker.invoke(MapperProxy.java:145) ~[mybatis-3.5.7.jar:3.5.7]
	at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:86) ~[mybatis-3.5.7.jar:3.5.7]
	at jdk.proxy2/jdk.proxy2.$Proxy66.getOrderByOrderId(Unknown Source) ~[na:na]
	at com.fancv.shardingdemo.service.impl.OrderServiceImpl.getOrderByOrderId(OrderServiceImpl.java:26) ~[classes/:na]
	at com.fancv.shardingdemo.controller.OrderController.getOrderInfo(OrderController.java:42) ~[classes/:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
	at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190) ~[spring-web-5.2.8.RELEASE.jar:5.2.8.RELEASE]
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) ~[spring-web-5.2.8.RELEASE.jar:5.2.8.RELEASE]
	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105) ~[spring-webmvc-5.2.8.RELEASE.jar:5.2.8.RELEASE]
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:878) ~[spring-webmvc-5.2.8.RELEASE.jar:5.2.8.RELEASE]
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:792) ~[spring-webmvc-5.2.8.RELEASE.jar:5.2.8.RELEASE]
	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.2.8.RELEASE.jar:5.2.8.RELEASE]
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040) ~[spring-webmvc-5.2.8.RELEASE.jar:5.2.8.RELEASE]
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943) ~[spring-webmvc-5.2.8.RELEASE.jar:5.2.8.RELEASE]
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.2.8.RELEASE.jar:5.2.8.RELEASE]

搜索资料发现

有人在升级到jdk9 的时候遇到同样问题

通过增加启动参数

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

在这里插入图片描述

原文信息

会出现以下错误信息:

Exception in thread “main”
java.lang.reflect.InaccessibleObjectException: Unable to make field
private static final long java.lang.Long.serialVersionUID accessible:
module java.base does not “opens java.lang” to unnamed module
@224aed64
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:207)
at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:171)
at java.base/java.lang.reflect.Field.setAccessible(Field.java:165)
at com.jdojo.intruder.TestManifestAttributes.main(TestManifestAttributes.java:10)
运行时错误表明应用程序无法访问私有静态serialVersionUID,因为java.base模块中的java.lang包未打开。我们先试试–add-opens这个选项:

C:\Java9Revealed>java --add-opens java.base/java.lang=ALL-UNNAMED
-jar com.jdojo.intruder\dist\com.jdojo.intruder.jar 输出信息如下:

Long.serialVersionUID=4290774380558885855 此命令工作正常,并验证命令行选项是这种情况下的解决方案。
我们使用MANIFEST.MF文件中的Add-Opens属性来修复此错误,如下所示。

Manifest-Version: 1.0 Main-Class:
com.jdojo.intruder.TestManifestAttributes Add-Opens:
java.base/java.lang 使用相同的命令重新创建可执行文件JAR并运行它:

C:\Java9Revealed>java -jar
com.jdojo.intruder\dist\com.jdojo.intruder.jar 输出结果为:

Long.serialVersionUID=4290774380558885855

再次运行项目,查询数据成功

总结:java11升级到java17 是在家中个人电脑,非生产环境,

遇到问题到解决问题大概5小时,因为工程是shareding 研究项目,涉及众多知识点,定位问题时间较长。

疑难:项目本身jdk11 启动没问题,但是升级jdk15 之后报错。

参考资料:https://www.cnblogs.com/IcanFixIt/p/7144366.html

技术交流群:

在这里插入图片描述

遇到:java.lang.reflect.InaccessibleObjectException: Unable to make 错误应该如何解决 遇到 "java.lang.reflect.InaccessibleObjectException: Unable to make..." 错误是由于Java的反射机制无法访问或调用一个非公共的方法、字段或构造函数所引发的异常。​方法获取私有字段的值,并修改它的值,然后再次获取并打印修改后的值。请注意,Java的反射机制允许我们突破了私有字段的访问限制,但这并不意味着我们可以随意访问所有非公共成员。在使用反射时,要确保你理解并遵守Java的安全机制,并根据实际需求谨慎使用。​​,并实例化了一个类对象​。 阅读详情

相关推荐

返回Map结构Unable to make field private static final long java.util.HashMap.serialVersionUID accessib问题

记录Unable to make field private static final long java.util.HashMap.serialVersionUID accessible问题

aurora 1142

遇到:java.lang.reflect.InaccessibleObjectException: Unable to make错误应该如何解决

然后,在 main 方法中,我们使用反射的方式获取到了私有字段,并调用 setAccessible(true) 方法来设置私有字段可访问。请注意,使用反射来访问私有成员变量可能会破坏封装性,应慎重使用,并确保你有足够的权限和理由进行此操作。请注意,使用反射机制进行访问是一种高级技术,应谨慎使用,并确保你了解其原理和风险。在修改访问修饰符或使用 setAccessible() 方法时,务必考虑到安全性和封装性的问题,并确保你有足够的权限和理由进行此操作。

牛肉胡辣汤 1万+

从JDK8升级到17,项目启动就报InaccessibleObjectException?手把手教你用--add-opens参数搞定模块化访问

本文详细解析了从JDK8升级到JDK17时常见的`InaccessibleObjectException`异常,并提供了使用`--add-opens`参数解决模块化访问问题的实用指南。文章涵盖了不同开发环境下的配置方法、常用模块开放组合以及根治方案,帮助开发者顺利过渡到JDK17。

weixin_42533622的博客 104

java.lang.reflect.InaccessibleObjectException

java.lang.reflect.InaccessibleObjectException 是一个运行时异常,它表示在使用 Java 反射时无法访问对象。这通常是因为访问权限不足导致的。例如,如果试图访问私有字段或方法,就可能会抛出此异常。 举个例子,假设有一个类 MyClass,它有一个私有字段 privateField,你可能会写出如下代码来尝试访问这个字段: Class<?> c...

weixin_35750747的博客 3171

JDK 9-17核心特性全解析:从开发效率到性能优化的现代Java指南

Java作为一门成熟的编程语言,其持续演进的核心在于提升开发效率、优化性能与内存管理、增强系统安全稳定性。从语言层面看,局部变量类型推断、模式匹配等特性通过简化语法和增强表达能力,显著提升了代码的简洁性和可读性,这是现代编程语言发展的重要趋势。在运行时层面,垃圾收集器的革新如ZGC和Shenandoah,通过实现亚毫秒级暂停,为高并发、低延迟应用提供了关键支撑,直接提升了系统的吞吐量和响应能力。这些底层优化与新的内存模型、类数据共享机制相结合,共同构成了现代Java高性能应用的基石。在微服务、云原生架构广泛

weixin_33800463的博客 471

datax-web从Spring Boot 2升级到Boot 3+JDK17:javax到jakarta、Security 6与反射限制全记录

Spring Boot作为Java后端的主流框架,其版本迭代往往牵动整个技术栈的同步演进。从Boot 2.x升级到Boot 3.2,核心变化之一是Java EE API的命名空间由javax迁移至jakarta,这直接影响了Controller、过滤器、校验注解以及数据访问层的依赖坐标;同时,JDK17引入的模块化反射限制,也让CGLIB代理、DataX子进程等场景需要额外配置--add-opens参数。Spring Security 6则删除了WebSecurityConfigurerAdapter,要求

weixin_34203832的博客 325

升级JDK17,报错:Exception java.lang.reflect.InaccessibleObjectException: Unable to make protected native

在 JDK1.8 及之前,这个属性是打开的,意思就是 1.8 前会反射出里面的所有方法。我们都知道反射会消耗性能。然而这些方法的使用频率不高,为了这些比较少调用的代码牺牲这些性能不值得,所以从 JDK1.8 后大量包的可访问反射属性都被关闭了,lang 就是其中之一。JDK17中把 accessiable 属性设置为 false 了。翻译:”base 模块中没将 lang 模块打包到未命名模块。

Shine19的博客 999

【Java常见异常】InaccessibleObjectException异常处理方法

问题 Word/Excel/PowerPoint是日常办公三件套,应用十分广泛,对于某些简单、重复的应用场景下,利用Java编程实现读写三件套变得十分必要,尤其是读写Excel文件。Apache POI库是操作此类办公软件的利器,功能非常强大,然而接口使用却不太友好,因此诞生了EasyExcel等基于POI的方便快捷的第三方库。 当前JDK的最新版本为18,在运行EasyExcel相关代码时,出现了InaccessibleObjectException异常。如下所示: Exception in thread

算法与编程之美 3279

JDK17:java.lang.reflect.InaccessibleObjectException

java.lang.reflect.InaccessibleObjectException: Unable to make private java.time.LocalDateTime(java.time.LocalDate,java.time.LocalTime) accessible: module java.base does not "opens java.time" to unnamed module

m0_50418887的博客 2039

PS/Ai/PR/AE等adobe出现正版弹窗提示:Your non-genuine Adobe app will be disabled soon解决办法

就是用专门的清理工具下载,清理工具在文章下方。然后新建三个空的记事本文件,重命名为 Adobe Genuine Launcher.exe,AdobeGCClient.exe,AGMService.exe。在该文件目录中,分别找到 Adobe Genuine Launcher.exe,AdobeGCClient.exe,AGMService.exe,然后在防火墙入站规则里,阻止Adobe Genuine Launcher.exe,AdobeGCClient.exe,AGMService.exe。

Q82556499的博客 1万+

手把手教 - VSCode 开发 GD32F450 单片机

系统版本:rt-thread v5.2.2单片机型号:GD32F450ZK基于文章进行开发。

weixin_46158019的博客 839

Jmeter5.1基于JDK17报错java.lang.reflect.InaccessibleObjectException

如果使用高版本的Jmeter版本,虽然不会报这个问题,但是性能指标却上不去,洒家也闹不明白。从上面的对比图可以看出,相同的脚本,不同版本下,TPS相差25左右,平均响应时间也有区别。对比5.6和5.1的版本,发现jmeter.sh中JAVA9_OPTS有差异。怀疑是引用了一个开源的工具包:hutool-all-5.8.20.jar。这个时候,通过perfmon监控指标,cpu基本利用到顶了。直接上5.6与5.1的版本的压测对比数据。将5.1的参数替换为5.6的即可。

ouyanglin111的博客 898

一生一芯 预学习阶段 NEMU代码学习(2)

如果 nemu_state.state == NEMU_ABORT:说明程序处于 "中止" 状态,输出 "ABORT",并且使用 ANSI_FG_RED 红色格式化显示。如果 halt_ret == 0,表示程序正常终止(触发了 "GOOD TRAP"),输出 "HIT GOOD TRAP",并使用 ANSI_FG_GREEN 绿色显示。如果要执行的指令数量 n 小于预定义的常量 MAX_INST_TO_PRINT,则将 g_print_step 置为 true,表示会逐步打印指令执行的过程。

weixin_45041054的博客 826

jdk17报错:Error querying database. Cause: java.lang.reflect.InaccessibleObjectException: Unable to ma

这个问题是与Java 17的模块路径相关的访问权限限制导致的。在Java 9及更高版本中,模块化系统引入了新的访问规则。所以权限受到了限制。需要在启动时添加,这里我们在idea中添加,这里我们用是idea2023版。最近写项目时,升级了以前的老项目,发现启动后接口无法调用报错。通过不断的查询资料,终于找到了错误。

m0_54140659的博客 2047

企业微信群机器人Webhook配置全攻略:从创建到发送消息的完整流程

本文详细介绍了企业微信群机器人Webhook的配置流程,从创建机器人到获取Webhook地址,再到发送各类消息的完整步骤。通过Python代码示例展示了文本、Markdown等消息类型的发送方法,并提供了性能优化建议和常见问题排查技巧,帮助企业高效实现自动化消息推送。

weixin_29208327的博客 6824

科研党必备:Zotero+Deepseek 打造AI文献阅读助手(附详细插件配置指南)

本文详细介绍了如何利用Zotero和Deepseek打造AI文献阅读助手,提升科研效率。从Zotero基础安装到中文文献处理插件茉莉花的配置,再到Deepseek API的集成与模型选择策略,全面覆盖了AI辅助阅读的关键环节。特别适合需要高效管理海量文献的科研工作者,显著提升文献筛选和分析速度。

backprop5master的博客 423

Spring Boot项目从JDK 8升级到JDK 17的完整避坑指南

Java作为企业级应用开发的核心语言,其版本演进直接关系到应用性能、安全性和可维护性。从JDK 8到JDK 17的跨越涉及语言特性、JVM内部机制和模块化系统的重大变革,理解这些底层原理是成功升级的关键。升级的技术价值在于获得ZGC/Shenandoah等现代垃圾回收器带来的低延迟、更好的容器原生支持以及增强的安全特性,从而提升系统稳定性和资源利用率。在微服务架构和云原生场景下,这些改进能显著优化应用启动速度、内存管理和弹性伸缩能力。本文聚焦于Spring Boot 2.3-2.7系列项目升级JDK 17的

weixin_30512043的博客 596

使用HFSS仿真分支波导耦合器

本文介绍了分支波导耦合器的HFSS仿真设计过程。首先给出了器件关键参数(t=0.365mm,l=1.600mm等),详细说明了建模步骤:包括创建中心分支、设置变量参数、镜像复制两侧分支、矩形波导端口设计等操作。重点阐述了激励端口设置方法,包括四个端口的积分线绘制,以及求解频率设定。最后展示了S参数、幅度平衡度和相位差等关键性能指标的仿真结果提取方法。整个设计过程体现了HFSS在微波器件仿真中的参数化建模和结果分析能力。

shao666888的博客 180

升级到Java17后,EasyMock无法使用

升级到Java17后,EasyMock无法使用

qq_38646452的博客 777

Deepseek接入QQ机器人:实现拟人化概率回复的完整指南

大语言模型API正在快速改变即时通讯工具的交互方式。通过标准化的OpenAI兼容接口,开发者可以将Deepseek等AI服务嵌入到QQ机器人等IM场景中,实现自然语言对话能力。其核心原理在于事件驱动架构:消息接收层通过OneBot协议获取群聊内容,业务层利用概率过滤与冷却机制控制回复节奏,再由大模型生成拟人化文本。这种设计不仅避免了机器人刷屏,还能通过系统提示词塑造性格,营造真实的社群陪伴体验。适用于粉丝群互动、内容订阅、小规模客服等场景,同时支持多群独立配置、关键词加权回复及上下文记忆扩展。在实际工程中,

weixin_29051245的博客 458

我的python学习之路

Python 是一门功能强大且易于学习的编程语言,广泛应用于数据分析、人工智能、Web 开发、自动化等领域。以下是一个 Python 学习路径的总结,帮助你系统地掌握 Python 编程。

数据知道的博客 3万+

JKD17运行报错Unable to make field private final byte[] java.lang.String.value accessible

综上,在设置了--illegal-access=deny(推荐设置deny,兼容未来Java版本)时,需同时添加--add-opens以开启对应模块/包允许被其他模块进行非法(non-public)反射访问。deny:未来的默认值,禁止所有的不同模块间的non-public反射访问,出现非法反射则抛出异常,除了使用特别的命令行参数排除的模块,比如使用 –add-opens排除某些模块使其能够通过非法反射访问。具体转换格式:--add-opens 被访问模块名/被访问包名=发起非法访问的模块名。

weixin_38405770的博客 1万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【Android studio 报错】Caused by: java.lang.reflect.InaccessibleObjectException 解决方案

经过一些尝试,上两图中修改的JDK version和Gradle version,可以编译通过。通过AI,大概了解报错的原因,高版本的JDK为了更好的高内聚和低耦合,引入了模块系统。

Shujie 3720

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

JDK1.8到JDK17升级实战:12个典型问题与解决方案全解析

本文全面解析从JDK1.8升级到JDK17过程中常见的12个典型问题及解决方案,包括反射访问异常、本地库链接问题、类加载失败等。重点介绍了模块化系统兼容性配置、废弃API替换、GC参数调整等关键升级技巧,帮助开发者顺利完成JDK版本迁移并提升应用性能。

l1k9j8h7g6的博客 316

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

IDEA调试Spring Boot必看:快速解决InaccessibleObjectException的5种方法

本文针对IDEA调试Spring Boot应用时常见的java.lang.reflect.InaccessibleObjectException异常,提供了5种核心解决方法。详细阐述了从在IDEA运行配置中添加--add-opens JVM参数、通过Maven/Gradle插件配置,到升级依赖等不同维度的解决方案,帮助开发者快速定位并修复因Java模块化系统与反射冲突导致的启动失败问题。

weixin_29234423的博客 197

jdk20 升级, gson 的坑

【代码】jdk升级的坑。

yuyue_999的博客 450
上一篇: ReentrantLock和Condition 实现生产者 运输者 消费者
下一篇: window 环境下docker 安装 rocketMQ
hamish-wu
博客等级 码龄15年 2814粉丝 162原创
评论 9
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值