分享一下在学习hutool遇到的一些问题和解决方法
下载hutool.jar
这个比较简单,直接在管网下载即可hutool官网
IDEA导入hutool.jar
导入类包很简单不再概述
添加maven依赖
在java项目包的根目录有一个pom.xml,在dependencies中加入以下内容:
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.8</version>
</dependency>
其中version是版本号
hutool-all是将hutool包中所有数据导入
缺少POI错误
在导入完hutool.jar包时如果直接写代码运行可能会出现
You need to add dependency of ‘poi-ooxml‘ to your project, and version
因为hutool包中自带POI包中的功能,但运行时可能还是会出错,当出错时可以在pom.xml中加上
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.3</version>
</dependency>
第二行是因为博主只使用了excel功能,所以如果有需要可以改成poi
第三行依旧是版本号,需要注意的地方就是,低版本hutool可能不支持低poi版本,建议都是高版本即可
log4j错误
在添加POI依赖后还有可能出现
ERROR StatusLogger Log4j2 could not find a logging implementation.
Please add log4j-core to the classpath. Using SimpleLogger to log to
the console…
此问题是说明你的log4j2没有被读取到,这时候要分两种情况,一种是查询
C:\Users\us1.m2\repository\org\apache\logging
此目录后发现有log4j2,则不需要重新下载log4j2的包,只需要在pom.xml,写上log4j2的依赖即可
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.18.0</version>
</dependency>
需要注意的是其中version表示的依旧是版本,一定要和logging路径下的log4j2的版本一致
如果发现没有log4j2的包则需要手动下载jar包Log4j2
再导入后,重新写一下依赖即可。
StatusLogger No Log4j 2 configuration错误
log4j2包导入好,依赖也写好后,也可能出现以下错误
ERROR StatusLogger No Log4j 2 configuration file found. Using default
configuration (logging only errors to the console), or user
programmatically provided configurations. Set system property
‘log4j2.debug’ to show Log4j 2 internal initialization logging. See
https://logging.apache.org/log4j/2.x/manual/configuration.html for
instructions on how to configure Log4j 2
解决方法就是在resources中手动写一个log4j2.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Properties>
<property name="log_level" value="info" />
<Property name="log_dir" value="log" />
<property name="log_pattern"
value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%p] - [%t] %logger - %m%n" />
<property name="file_name" value="test" />
<property name="every_file_size" value="100 MB" />
</Properties>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="${log_pattern}" />
</Console>
<RollingFile name="RollingFile"
filename="${log_dir}/${file_name}.log"
filepattern="${log_dir}/$${date:yyyy-MM}/${file_name}-%d{yyyy-MM-dd}-%i.log">
<ThresholdFilter level="DEBUG" onMatch="ACCEPT"
onMismatch="DENY" />
<PatternLayout pattern="${log_pattern}" />
<Policies>
<SizeBasedTriggeringPolicy
size="${every_file_size}" />
<TimeBasedTriggeringPolicy modulate="true"
interval="1" />
</Policies>
<DefaultRolloverStrategy max="20" />
</RollingFile>
<RollingFile name="RollingFileErr"
fileName="${log_dir}/${file_name}-warnerr.log"
filePattern="${log_dir}/$${date:yyyy-MM}/${file_name}-%d{yyyy-MM-dd}-warnerr-%i.log">
<ThresholdFilter level="WARN" onMatch="ACCEPT"
onMismatch="DENY" />
<PatternLayout pattern="${log_pattern}" />
<Policies>
<SizeBasedTriggeringPolicy
size="${every_file_size}" />
<TimeBasedTriggeringPolicy modulate="true"
interval="1" />
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<Root level="${log_level}">
<AppenderRef ref="Console" />
<AppenderRef ref="RollingFile" />
<appender-ref ref="RollingFileErr" />
</Root>
</Loggers>
</Configuration>
NoSuchMethod错误
因为博主在使用的时候,没有注意到之前已经有过log4j2的包,导致又重新下载log4j2包添加进去后又出现
Exception in thread “main” java.lang.NoSuchMethodError: ‘org.apache.logging.log4j.LogBuilder org.apache.logging.log4j.Logger.atDebug()’
这时候可以找到logging目录将下载的版本直接删除,并将pow.xml中log4j2的依赖中的version改成之前版本即可。