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,同时引入新类。