希望Hutool能支持下JDK8~JDK17的所有版本 · Issue #I5AGFK · dromara/hutool

您所在的位置:网站首页 支持jdk17的idea版本 希望Hutool能支持下JDK8~JDK17的所有版本 · Issue #I5AGFK · dromara/hutool

希望Hutool能支持下JDK8~JDK17的所有版本 · Issue #I5AGFK · dromara/hutool

2024-01-30 02:03| 来源: 网络整理| 查看: 265

不能放弃呀,肯定要有取舍,Spring官网都替我们踩坑,踩了那么多。咋们肯定不要怕。 得弄一个版本,作为 jdk17适配的么 比如:7.X, 功能和6.X一样, 只是适配了,jdk9+版本,有取舍。 再说:这个SpringBoot 3.X 2022年11月份正式发布,到时候,肯定有一部分人升级; 到时候,就没法 用hutool。

jdk9+会报错的反射增加: @SuppressWarnings("deprecation") // on JDK 9 或者 @Deprecated(since = "9.0.0", forRemoval = true)

或者:直接咋就 ,6.X 适配 springboot3(jdk17 + jakarta ee 9)

:joy: :cry: :joy: 跪求抉择(○` 3′○)

就反射:setAccessible(true) 要加jvm参数,其实: 在新版本,文档 加好说明就可以了; 没必要,过多 纠结。能升级jdk9+, 基本也了解了一些,jdk9的模块化。

你看 Spring的ReflectionUtils,也有这问题,直接写的:jdk9,不建议使用反射了。避免和jvm安全机制冲突。 结论:不用担心,这个是jdk机制问题,无法绕过的。无论如何 都要添加jvm参数。

Spring官方源码 org.springframework.util.ReflectionUtils /** * Make the given field accessible, explicitly setting it accessible if * necessary. The {@code setAccessible(true)} method is only called * when actually necessary, to avoid unnecessary conflicts with a JVM * SecurityManager (if active). * @param field the field to make accessible * @see java.lang.reflect.Field#setAccessible */ @SuppressWarnings("deprecation") // on JDK 9 public static void makeAccessible(Field field) { if ((!Modifier.isPublic(field.getModifiers()) || !Modifier.isPublic(field.getDeclaringClass().getModifiers()) || Modifier.isFinal(field.getModifiers())) && !field.isAccessible()) { field.setAccessible(true); } }

测试了,Spring自带的反射一样报错:

spring 5 自带工具类,同样报错 输入图片说明

-ea -Xms24m -Xmx768m -verbose:gc -XX:+PrintCommandLineFlags --add-exports=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.regex=ALL-UNNAMED --add-exports=jdk.unsupported/sun.misc=ALL-UNNAMED


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3