1. 运行项目
使用命令git clone https://gitee.com/ld/J2Cache
将项目克隆下来,具体安装运行方法参见README.md
文档。
2. 部分升级
2.1 Java升级
项目默认使用的jdk1.8
,将项目升级为jdk17
。修改jdk
版本后,使用maven
打包项目会报错程序包javax.annotation不存在
。需要在根目录的pom.xml
添加依赖引入javax.annotation
。
1 | <dependency> |
继续进行下一步,执行命令runtest.bat
,会报错Unable to make field private final byte[] java.lang.String.value accessible: module java.base does not "opens java.lang" to unnamed module @4ed07f8c
。通常在jdk9
及以上会遇到该问题。
通过mvn
命令解决该问题暂时没有找到方法。
可以通过在IDEA中直接运行main
方法,添加vm
参数,解决该问题。需要添加的vm
参数为:
1 | --add-opens java.base/java.lang=ALL-UNNAMED |
由于main
方法中,获取的是System.Console
,而在IDEA中直接运行,获取不到该对象,需要修改读入输入的对象,将其修改为Scanner
对象进行读入。
2.2 Redis升级
将Redis升级5.0版本后。
BinaryJedisCommands
类报错,原因是删除了该类,使用JedisBinaryCommands
类替代。
在RedisClient.java
类中,
重写注解报错,父类没有该方法,删除即可。
包装类报错,原因是新版本使用基本类型代替了包装类。
新版本中将返回值由Set类型改为了List。
新版本中移除了类ShardedJedisPool
,引入JedisSharding
替换。
参数设置错误,只需要一个HostAndPort
的列表即可。
最后一个参数poolConfig
原来参数类型为JedisPoolConfig
,新版本构造函数的类型修改为GenericObjectPoolConfig<Connection>
。
在RedisUtils
工具类中,将newPoolConfig
方法参数修改为GenericObjectPoolConfig<Jedis>
。同时添加方法transferPoolConfig
,将GenericObjectPoolConfig<Jedis>
转换为GenericObjectPoolConfig<Connection>
。
在类RedisPubSubClusterPolicy
类中,找不到Pool
类,将这个类的包修改为import redis.clients.jedis.util.Pool;
在RedisGenericCache
类中,
将报错类更改为以上类。
RedisPubSubClusterPolicy
类中,父类方法指定为final,不能被重写了。
2.3 Rocketmq升级
升级到5.1.4后报错
2.4 FastJson升级
升级到2.0.41,其中groupId和artifactId也进行了更改。
FastjsonSerializer
类里
需要修改为com.alibaba.fastjson2
,同时引入新类。