发生缘由
- 学习如何抽取Jedis连接池工具类
环境
- redis版本:
redis-2.8.9
- 导入的两个Jar包分别为:
commons-pool2-2.3.jar
jedis-2.7.0.jar
- jdk版本:jdk-16.0.2
- Idea版本:2021.2
- 电脑系统:win10
问题描述
新建项目
创建一个JavaWeb项目:
- 新建一个Moudle。
- 右键Moudle名称,点击第二个选框Add frameworks Support…。
- 点击Java EE下面的web Application。
- 点击OK,这样就创建好了一个web文件夹,里面自带了一个index.jsp。
导入jar包及配置文件
- 在web文件夹下面创建一个WEB-INF目录,然后在WEB-INF目录下面创建一个lib文件夹。lib文件夹下面用于存放依赖的jar包。
- 将
commons-pool2-2.3.jar
和jedis-2.7.0.jar
两个jar包复制到lib文件夹下面。按住ctrl键选中两个jar包–>右键–>点击add as library。将外部jar包添加到IntelliJ IDEA项目。 - 复制配置文件
jedis.properties
到src目录下面。 - 创建utils包,在utils包下面创建一个类:
JedisPoolUtils
。里面写抽取的Jedis连接池的代码。 - main方法运行,结果发现报错。
报错信息
java.lang.ExceptionInInitializerError
at cn.com.demo01.redis.Demo01Redis.test(Demo01Redis.java:170)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:567)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
at org.junit.runners.ParentRunner