🍬A set of tools that keep Java sweet.

Overview

🍬 A set of tools that keep Java sweet.

👉 https://hutool.cn/ 👈

star github star



🌎 English Documentation


📚 简介

Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。

Hutool中的工具方法来自每个用户的精雕细琢,它涵盖了Java开发底层代码中的方方面面,它既是大型项目开发中解决小问题的利器,也是小型项目中的效率担当;

Hutool是项目中“util”包友好的替代,它节省了开发人员对项目中公用类和公用工具方法的封装时间,使开发专注于业务,同时可以最大限度的避免封装不完善带来的bug。

🎁 Hutool名称的由来

Hutool = Hu + tool,是原公司项目底层代码剥离后的开源库,“Hu”是公司名称的表示,tool表示工具。Hutool谐音“糊涂”,一方面简洁易懂,一方面寓意“难得糊涂”。

🍺 Hutool如何改变我们的coding方式

Hutool的目标是使用一个工具方法代替一段复杂代码,从而最大限度的避免“复制粘贴”代码的问题,彻底改变我们写代码的方式。

以计算MD5为例:

  • 👴 【以前】打开搜索引擎 -> 搜“Java MD5加密” -> 打开某篇博客-> 复制粘贴 -> 改改好用
  • 👦 【现在】引入Hutool -> SecureUtil.md5()

Hutool的存在就是为了减少代码搜索成本,避免网络上参差不齐的代码出现导致的bug。


🛠️ 包含组件

一个Java基础工具类,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类,同时提供以下组件:

模块 介绍
hutool-aop JDK动态代理封装,提供非IOC下的切面支持
hutool-bloomFilter 布隆过滤,提供一些Hash算法的布隆过滤
hutool-cache 简单缓存实现
hutool-core 核心,包括Bean操作、日期、各种Util等
hutool-cron 定时任务模块,提供类Crontab表达式的定时任务
hutool-crypto 加密解密模块,提供对称、非对称和摘要算法封装
hutool-db JDBC封装后的数据操作,基于ActiveRecord思想
hutool-dfa 基于DFA模型的多关键字查找
hutool-extra 扩展模块,对第三方封装(模板引擎、邮件、Servlet、二维码、Emoji、FTP、分词等)
hutool-http 基于HttpUrlConnection的Http客户端封装
hutool-log 自动识别日志实现的日志门面
hutool-script 脚本执行封装,例如Javascript
hutool-setting 功能更强大的Setting配置文件和Properties封装
hutool-system 系统参数调用封装(JVM信息等)
hutool-json JSON实现
hutool-captcha 图片验证码实现
hutool-poi 针对POI中Excel和Word的封装
hutool-socket 基于Java的NIO和AIO的Socket封装
hutool-jwt JSON Web Token (JWT)封装实现

可以根据需求对每个模块单独引入,也可以通过引入hutool-all方式引入所有模块。


📝 文档

📘 中文文档

📙 参考API

🎬 视频介绍


🪙 支持Hutool

💳 捐赠

如果你觉得Hutool不错,可以捐赠请维护者吃包辣条~,在此表示感谢^_^。

Gitee上捐赠

捐赠给Dromara组织

👕 周边商店

你也可以通过购买Hutool的周边商品来支持Hutool维护哦!

我们提供了印有Hutool Logo的周边商品,欢迎点击购买支持:

👉 Hutool 周边商店 👈


📦 安装

🍊 Maven

在项目的pom.xml的dependencies中加入以下内容:

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.7.18</version>
</dependency>

🍐 Gradle

implementation 'cn.hutool:hutool-all:5.7.18'

📥 下载jar

点击以下链接,下载hutool-all-X.X.X.jar即可:

🔔️ 注意 Hutool 5.x支持JDK8+,对Android平台没有测试,不能保证所有工具类或工具方法可用。 如果你的项目使用JDK7,请使用Hutool 4.x版本(不再更新)

🚽 编译安装

访问Hutool的Gitee主页:https://gitee.com/dromara/hutool 下载整个项目源码(v5-master或v5-dev分支都可)然后进入Hutool项目目录执行:

./hutool.sh install

然后就可以使用Maven引入了。


🏗️ 添砖加瓦

🎋 分支说明

Hutool的源码分为两个分支,功能如下:

分支 作用
v5-master 主分支,release版本使用的分支,与中央库提交的jar一致,不接收任何pr或修改
v5-dev 开发分支,默认为下个版本的SNAPSHOT版本,接受修改或pr

🐞 提供bug反馈或建议

提交问题反馈请说明正在使用的JDK版本呢、Hutool版本和相关依赖库版本。

🧬 贡献代码的步骤

  1. 在Gitee或者Github上fork项目到自己的repo
  2. 把fork过去的项目也就是你的项目clone到你的本地
  3. 修改代码(记得一定要修改v5-dev分支)
  4. commit后push到自己的库(v5-dev分支)
  5. 登录Gitee或Github在你首页可以看到一个 pull request 按钮,点击它,填写一些说明信息,然后提交即可。
  6. 等待维护者合并

📐 PR遵照的原则

Hutool欢迎任何人为Hutool添砖加瓦,贡献代码,不过维护者是一个强迫症患者,为了照顾病人,需要提交的pr(pull request)符合一些规范,规范如下:

  1. 注释完备,尤其每个新增的方法应按照Java文档规范标明方法说明、参数说明、返回值说明等信息,必要时请添加单元测试,如果愿意,也可以加上你的大名。
  2. Hutool的缩进按照Eclipse(不要跟我说IDEA多好用,维护者非常懒,学不会,IDEA真香,改了Eclipse快捷键后舒服多了)默认(tab)缩进,所以请遵守(不要和我争执空格与tab的问题,这是一个病人的习惯)。
  3. 新加的方法不要使用第三方库的方法,Hutool遵循无依赖原则(除非在extra模块中加方法工具)。
  4. 请pull request到v5-dev分支。Hutool在5.x版本后使用了新的分支:v5-master是主分支,表示已经发布中央库的版本,这个分支不允许pr,也不允许修改。
  5. 我们如果关闭了你的issue或pr,请不要诧异,这是我们保持问题处理整洁的一种方式,你依旧可以继续讨论,当有讨论结果时我们会重新打开。

Star Hutool

Giteye chart

Stargazers over time

📌 公众号

Comments
  • BOM should be declared in dependencyManagement for import

    BOM should be declared in dependencyManagement for import

    Currently, hutool-bom cannot be imported because the modules are declared in dependencies block. However, "bom" means user can import this pom file to manage versions instead of bring transitive dependencies.

    enhancement question 
    opened by JasonMing 28
  • sm2加密失败

    sm2加密失败

    版本情况

    JDK版本: 1.8.0_241 hutool版本: 5.5.7

    问题描述(包括截图)

    1. 复现代码 //String pub = "3059301306072a8648ce3d020106082a811ccf5501822d0342000455e34e8d237033d89b1b12f3dcfbdaac7dc37264c16b3487b30301e428249fb4142dca67c8eb8c69b4920610c72a62dd246dbab5ee743a726ce69e10e8725a33"; String pub = "047FC92B366CACF6DC26FACEF62E6655D96E34206B0600C4BA0A02C20FED0983F3153E1D8F9B4CD82D218744E3248E5957B986A32345DB3B051187D33D5F64CFE8";

       SM2 sm2 = SmUtil.sm2(null,pub);
      
       // 公钥加密,私钥解密
       String encryptStr = sm2.encryptBcd("text", KeyType.PublicKey);
      
       System.out.println("encryptStr:"+encryptStr);
      

    Console.log("报错了"); Exception in thread "main" cn.hutool.crypto.CryptoException: InvalidKeySpecException: encoded key spec not recognized: failed to construct sequence from byte[]: unknown tag 23 encountered at cn.hutool.crypto.KeyUtil.generatePublicKey(KeyUtil.java:353) at cn.hutool.crypto.KeyUtil.generatePublicKey(KeyUtil.java:333) at cn.hutool.crypto.asymmetric.SM2.(SM2.java:83) at cn.hutool.crypto.SmUtil.sm2(SmUtil.java:84) at com.org.gameg.controller.login.LoginController.main(LoginController.java:43) Caused by: java.security.spec.InvalidKeySpecException: encoded key spec not recognized: failed to construct sequence from byte[]: unknown tag 23 encountered at org.bouncycastle.jcajce.provider.asymmetric.util.BaseKeyFactorySpi.engineGeneratePublic(Unknown Source) at org.bouncycastle.jcajce.provider.asymmetric.ec.KeyFactorySpi.engineGeneratePublic(Unknown Source) at java.security.KeyFactory.generatePublic(KeyFactory.java:328) at cn.hutool.crypto.KeyUtil.generatePublicKey(KeyUtil.java:351) ... 4 more

    1. 堆栈信息

    2. 测试涉及到的文件(注意脱密) 注释的那个key是可以加密的,未注释的那个key不能加密,两个都是政府颁发的测试秘钥

    报错图片 image

    question 
    opened by zhongziqiang 22
  • log日志bug

    log日志bug

    版本情况

    JDK版本: 11.0.8 hutool版本: 5.4.3

    问题描述(包括截图)

    目前我使用的日志框架是log4j2,日志根据info,warn,error 显示了绿色,黄色,红色三种不同的颜色。 以前使用的@Slf4j注解,每次idea升级后lombok都无法使用非常影响我们 故转而使用hutool-all的log,在版本5.4.1中还是好好的。我升级到最新的5.4.3中后就异常了

    是否更改了日志实现方式?

    1. 复现代码
    private static final Log log = LogFactory.get();
    
    1. 堆栈信息

    2. 测试涉及到的文件(注意脱密)

    比如报错的Excel文件,有问题的图片等。

    有问题的图片(hutool-all 5.4.3) image

    正常情况(hutool-all 5.4.1) image

    bug duplicate 
    opened by wuai1024 21
  • 使用http上传文件失败

    使用http上传文件失败

    版本情况

    JDK版本: jdk-11.0.12 hutool版本: 5.8.10

    问题描述(包括截图)

    上传失败,但是使用postman可以正常上传 image image image

    1. 复现代码

    Map<String, Object> hashMap = new HashMap<>(2); hashMap.put("file",file2); HttpUtil.createPost("http://192.168.43.132:5001/api/v0/add") .form(hashMap) .keepAlive(true) .execute(); String post = HttpUtil.post("http://192.168.43.132:5001/api/v0/add", hashMap);

    1. 堆栈信息 java.io.IOException: Error writing to server at java.base/sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:718) ~[na:na] at java.base/sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:730) ~[na:na] at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1613) ~[na:na] at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1520) ~[na:na] at java.base/java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:527) ~[na:na] at cn.hutool.http.HttpConnection.responseCode(HttpConnection.java:474) ~[hutool-all-5.8.10.jar:na] at cn.hutool.http.HttpResponse.init(HttpResponse.java:528) ~[hutool-all-5.8.10.jar:na] at cn.hutool.http.HttpResponse.initWithDisconnect(HttpResponse.java:504) ~[hutool-all-5.8.10.jar:na] at cn.hutool.http.HttpResponse.(HttpResponse.java:82) ~[hutool-all-5.8.10.jar:na] at cn.hutool.http.HttpRequest.doExecute(HttpRequest.java:1163) ~[hutool-all-5.8.10.jar:na] at cn.hutool.http.HttpRequest.execute(HttpRequest.java:1030) ~[hutool-all-5.8.10.jar:na] at cn.hutool.http.HttpRequest.execute(HttpRequest.java:1006) ~[hutool-all-5.8.10.jar:na] at com.cmbaas.ipfs_cluster.controller.IpfsController.add(IpfsController.java:58) ~[classes/:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na] at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-5.3.24.jar:5.3.24] at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-5.3.24.jar:5.3.24] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-5.3.24.jar:5.3.24] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.24.jar:5.3.24] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.24.jar:5.3.24] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.24.jar:5.3.24] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1071) ~[spring-webmvc-5.3.24.jar:5.3.24] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964) ~[spring-webmvc-5.3.24.jar:5.3.24] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.24.jar:5.3.24] at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5.3.24.jar:5.3.24] at javax.servlet.http.HttpServlet.service(HttpServlet.java:696) ~[tomcat-embed-core-9.0.69.jar:4.0.FR] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.24.jar:5.3.24] at javax.servlet.http.HttpServlet.service(HttpServlet.java:779) ~[tomcat-embed-core-9.0.69.jar:4.0.FR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.69.jar:9.0.69] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.24.jar:5.3.24] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.24.jar:5.3.24] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.24.jar:5.3.24] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.24.jar:5.3.24] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.24.jar:5.3.24] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.24.jar:5.3.24] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:177) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.catalina.core.StandardContextValve.__invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:41002) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:891) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1784) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]
    2. 测试涉及到的文件(注意脱密) 可以自己创建一个文件

    比如报错的Excel文件,有问题的图片等。

    question 
    opened by jdAction 19
  • HttpUtil的https请求问题,报错connection reset

    HttpUtil的https请求问题,报错connection reset

    版本情况

    JDK版本: jdk1.8.0_111 hutool版本: 5.3.5和5.6.5 httpclient版本:4.5.12

    问题描述

    对接第三方平台(.net开发,IIS直接部署的https,没有使用nginx) postman和浏览器测试接口都正常 使用HttpUtil调用任何接口都是connection reset 起初认为是对方服务器没有做好TLSv1.2的解析,后来调查过后发现对方是支持的 然后使用httpclient调用,一切正常

    1. 复现代码
    • HttpUtil
    public static void main(String[] args) {
        Map<String, Object> body = new HashMap<>();
        body.put("param1", "xxx");
        body.put("param2", "xxx");
        String resultStr = HttpUtil
    		    .createPost("https://www.xxx.com:9021/api/xxx")
    		    .header("Content-Type", "application/json")
    		    .body(JSONUtil.toJsonStr(body))
    		    .execute()
    		    .charset("utf-8")
    		    .body();
        System.out.println(JSONUtil.toJsonPrettyStr(resultStr));
    }
    
    • httpclient
    public static void main(String[] args) {
        try {
            HttpPost httppost = new HttpPost("https://www.xxx.com:9021/api/xxx");
    	httppost.addHeader("Content-type","application/json");
    
    	Map<String, Object> body = new HashMap<>();
    	body.put("param1", "xxx");
    	body.put("param2", "xxx");
    	StringEntity entity = new StringEntity(JSONUtil.toJsonStr(body));
    	httppost.setEntity(entity);
    
    	HttpClient httpclient = HttpClients.createDefault();
    	HttpResponse resp = httpclient.execute(httppost);
    	HttpEntity he = resp.getEntity();
    	String respContent = EntityUtils.toString(he,"UTF-8");
    	System.out.println(JSONUtil.toJsonPrettyStr(respContent));
        }catch (Exception e) {
    	e.printStackTrace();
        }
    }
    
    1. 堆栈信息 添加-Djavax.net.debug=ssl参数后的日志
    • HttpUtil image

    • httpclient image

    question 
    opened by Murphy-Chang 17
  • Linux 环境下 java17 使用 Bouncy Castle 做加解密会出现 JCE cannot authenticate the provider BC 异常

    Linux 环境下 java17 使用 Bouncy Castle 做加解密会出现 JCE cannot authenticate the provider BC 异常

    版本情况

    JDK版本: oracle java 17 hutool版本: 5.8.7(请确保最新尝试是否还有问题)

    问题描述(包括截图)

    Linux 环境下 java17 使用 Bouncy Castle 做加解密会出现 JCE cannot authenticate the provider BC 。 https://github.com/spring-projects/spring-boot/issues/28837 中有讨论过这个问题,在 2.7.2 及之前版本的springboot 有修复过这个问题,通过使用

    bootJar {
        requiresUnpack '**/bcprov-jdk15on-*.jar'
    }
    

    可以解决问题,但是后来发现又会导致别的问题出现,所有修改被回归了。

    在新的 2.7.3 和 2.74 版本依旧无法支持使用上面那个修改调用加解密库。

    在议题中有另一个方式可以解决问题就是在调用 Bouncy Castle 前执行 Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());

    希望可以将这句话加到 hutool 调用 Bouncy Castle 的语句前,这样每次调用工具类的时候不需要在自己手动加了。

    bug 
    opened by FULaBUla 14
  • Excel读取出来的数据最后一列有丢失的单元格信息

    Excel读取出来的数据最后一列有丢失的单元格信息

    版本情况

    JDK版本: openjdk_8_201 hutool版本: 5.5.4(请确保最新尝试是否还有问题)

    问题描述(包括截图)

    使用ExcelReader读取Excel文件,最后一列的空单元格没有加入最终的结果集中,非最后一列的空单元格不会丢失。示例Excel见截图,期望标红部分的元素可以放入结果集中,这样结果是一个m*n的矩阵

    1. 复现代码
    cn.hutool.poi.excel.ExcelReader#read()
    
    1. 堆栈信息

    2. 测试涉及到的文件(注意脱密)

    image

    question 
    opened by xlhtc007 14
  • extract文件后压缩文件的句柄并未释放,导致删除文件失败

    extract文件后压缩文件的句柄并未释放,导致删除文件失败

    版本情况

    JDK版本: zulujdk_8_201 hutool版本: 5.3.2

    问题描述(包括截图)

    image

    在extract类型为7z的压缩包后,句柄并未释放,导致文件无法删除。确认流应该关闭了,但资源并未释放是什么原因呢?

    1. 复现代码
    Extractor extractor = CompressUtil.createExtractor(
                    CharsetUtil.defaultCharset(),
                    FileUtil.file(compressFileName));
    extractor.extract(FileUtil.file(extractDir));
    FileUtil.del(compressFileName)
    
    bug 
    opened by SleepyOcean 13
  • `IdUtil.getDataCenterId(Long.MAX_VALUE)` 偶尔会出现小于等于1的 `dataCenterId`

    `IdUtil.getDataCenterId(Long.MAX_VALUE)` 偶尔会出现小于等于1的 `dataCenterId`

    测试不通过日志:

    [INFO] Running cn.hutool.core.util.IdUtilTest
    Error:  Tests run: 8, Failures: 1, Errors: 0, Skipped: 3, Time elapsed: 0.088 s <<< FAILURE! - in cn.hutool.core.util.IdUtilTest
    Error:  getDataCenterIdTest  Time elapsed: 0.012 s  <<< FAILURE!
    java.lang.AssertionError
    	at cn.hutool.core.util.IdUtilTest.getDataCenterIdTest(IdUtilTest.java:141)
    

    IdUtilTest 测试用例源码:

    @Test
    public void getDataCenterIdTest(){
    	final long dataCenterId = IdUtil.getDataCenterId(Long.MAX_VALUE);
    	Assert.assertTrue(dataCenterId > 1);
    }
    
    opened by wangliang181230 13
  • 疑惑:使用Assert.notNull断言后,IDEA依然提示Method invocation 'string' may produce 'NullPointerException'

    疑惑:使用Assert.notNull断言后,IDEA依然提示Method invocation 'string' may produce 'NullPointerException'

    版本情况

    JDK版本: java version "1.8.0_291" hutool版本: 5.6.2 IntelliJ IDEA 2021.3

    问题描述(包括截图)

    1. 使用了Assert.notNull断言,IDEA检测到依然可能出现空指针,使用org.springframework.util.Assert.notNull则不会有这种提示。感觉是IDEA检测不到Hutool的断言做了非空校验,但是又没有找到比较好的方式来关闭这种提示。

    image image

    复现代码

        @Test
        public void okHttp() {
            OkHttpClient okHttpClient = new OkHttpClient().newBuilder().build();
            Request qryRequest = new Builder()
                    .url("https://baidu.com")
                    .build();
    
            try (Response response = okHttpClient.newCall(qryRequest).execute()) {
                // 解析响应码
                Assert.state(response.isSuccessful(), "调用接口失败");
    
                // 解析响应体
                ResponseBody responseBody = response.body();
                Assert.notNull(responseBody, "响应体为空");
    
                // 解析响应数据、
                // responseBody.string()方法IDEA提示“Method invocation 'string' may produce 'NullPointerException' ”
                String responseData = responseBody.string();
                System.out.println(responseData);
            } catch (IOException ignored) {
            }
        }
    
    1. 堆栈信息

    2. 测试涉及到的文件(注意脱密)

    比如报错的Excel文件,有问题的图片等。

    question 
    opened by ahaha-vip 13
  • 缓存没用 ,我把代码给你看看

    缓存没用 ,我把代码给你看看

    import cn.hutool.cache.CacheUtil;
    import cn.hutool.cache.impl.TimedCache;
    
    public class CacheLocalUtil {
    
        private static final TimedCache<String, String> timedCache = CacheUtil.newTimedCache(7200*1000);
    
        private  CacheLocalUtil(){
            timedCache.schedulePrune(7200*1000);
        }
    
        private static class  CacheLocalUtilInstance{
    
            private static final CacheLocalUtil instance=new CacheLocalUtil();
        }
    
        public static CacheLocalUtil getInstance(){
            return CacheLocalUtilInstance.instance;
        }
    
        public void  put(String k ,String v,long time){
            timedCache.put(k,v,time);
        };
    
    
        public String get(String k){
            String s = timedCache.get(k, false);
            return s;
        }
    
    }
    
    bug 
    opened by zhangzeli 13
  • SpringUtil.getBean 处于非 Spring 环境下应当抛出一个合适的异常

    SpringUtil.getBean 处于非 Spring 环境下应当抛出一个合适的异常

    版本情况

    JDK版本: openjdk_8_201 hutool版本: 5.8.11(请确保最新尝试是否还有问题)

    问题描述(包括截图)

    当处于非 Spring 环境下,SpringUtil.getBean 抛出了空指针异常,应当处理下换成一个合适的异常类型(顺带增加一个判断是否处于 Spring 环境的方法?)

    opened by cn-src 1
  • fix(FileTypeUtil): 重构根据file magic number判断文件类型

    fix(FileTypeUtil): 重构根据file magic number判断文件类型

    1.重构多个Magic Number 2.根据单独类型匹配,修复某些文件跳位置对比 3.获取到文件Mime类型和后缀 4.获取文件流从28byte提升到64byte 5.添加精确匹配如docx、xlsx、pptx、doc、xls、ppt,精确匹配为8192byte(大小10k文件左右) 6.添加file magic number枚举

    Closes https://github.com/dromara/hutool/issues/2821

    opened by CherryRum 0
  • Field [modifiers] is not exist in [java.lang.reflect.Field]

    Field [modifiers] is not exist in [java.lang.reflect.Field]

    版本情况

    JDK版本: jdk17 hutool版本: 5.8.5

    问题描述(包括截图)

    HttpRequest 使用Patch报错

    image
    1. 复现代码
    
    import cn.hutool.http.HttpRequest;
    import cn.hutool.http.HttpUtil;
    import cn.hutool.http.Method;
    
    public class A {
        public static void main(String[] args) {
            HttpRequest request = HttpUtil.createRequest(Method.PATCH,"http://localhost:8081/test/patch");
            request.execute();
            System.out.println(1);
        }
    }
    
    
    1. 堆栈信息
    java.lang.IllegalArgumentException: Field [modifiers] is not exist in [java.lang.reflect.Field]
     at cn.hutool.core.lang.Assert.lambda$notNull$3(Assert.java:217)
     at cn.hutool.core.lang.Assert.notNull(Assert.java:197)
     at cn.hutool.core.lang.Assert.notNull(Assert.java:217)
     at cn.hutool.core.util.ReflectUtil.setFieldValue(ReflectUtil.java:315)
     at cn.hutool.http.HttpGlobalConfig.allowPatch(HttpGlobalConfig.java:201)
     at cn.hutool.http.HttpConnection.setMethod(HttpConnection.java:123)
     at cn.hutool.http.HttpRequest.initConnection(HttpRequest.java:1172)
     at cn.hutool.http.HttpRequest.doExecute(HttpRequest.java:1135)
     at cn.hutool.http.HttpRequest.execute(HttpRequest.java:1013)
     at cn.hutool.http.HttpRequest.execute(HttpRequest.java:989)
    
    opened by kings1990 4
  • 使用FileTypeUtil判断wav后缀的录音文件类型,没有匹配到

    使用FileTypeUtil判断wav后缀的录音文件类型,没有匹配到

    版本情况

    JDK版本: jdk8 hutool版本: 5.3.10

    问题描述(包括截图)

    image

    经过测试,不同的wav文件,文件流头部16进制字符串格式为

    52494646xxxxxxxx57415645666D74201200000006000100401F0000
    

    中间的8个x都不同,下面FileTypeUtil类中fileTypeMap这么写,应该是不对的

    fileTypeMap.put("52494646e27807005741", "wav"); // Wave (wav)
    
    1. 测试涉及到的文件,下面的测试文件下载有效期:2022:12:18 16:11:53 http://120.24.173.36:9000/sinvie/sinvie-steward/server/2022/1215/20221221145616271.wav
    bug 
    opened by yanjingfan 2
  • 有没有StrUtil.format反解析的方法

    有没有StrUtil.format反解析的方法

    StrUtil.format("siot/sys/{productKey}/{deviceKey}/property/get", MapUtil.builder().put("productKey", "11").put("deviceKey", "22").build());
    

    我可以使用上面的方法格式化字符串,有没有办法可以反过来,获取map参数呢 比如

    StrUtil.deFormat("siot/sys/{productKey}/{deviceKey}/property/get", "siot/sys/11/22/property/get")
    

    返回一个map,包含参数名称和值

    opened by liu-xinhui 9
Releases(5.8.11)
  • 5.8.11(Dec 27, 2022)

    5.8.11 (2022-12-27)

    🐣新特性

    • 【core 】 CharUtil.isBlankChar增加\u180e(pr#2738@Github)
    • 【core 】 SyncFinisher线程同步结束器添加立即结束方法(pr#879@Gitee)
    • 【core 】 HtmlUtil中escape方法,增加不断开空格(nbsp)转译,防止xss攻击(pr#2755@Github)
    • 【extra 】 修正sftp.cd方法 方法注释和实际效果不符(issue#2758@Github)
    • 【core 】 修改PhoneUtil容易歧义的注释(issue#I63GWK@Gitee)
    • 【crypto】 KeyUtil中的读取KeyStore文件的方法增加全局Provider(issue#I6796G@Gitee)
    • 【extra 】 CompressUtil 新增 stripComponents 参数(pr#904@Gitee)
    • 【extra 】 ServletUtil和JakartaServletUtil新增获取所有响应头的方法(pr#2828@Github)
    • 【core 】 BooleanUtil增加toString重载(pr#2816@Github)

    🐞Bug修复

    • 【json 】 修复普通byte数组转JSONArray时的异常(pr#875@Gitee)
    • 【core 】 修复ArrayUtil.insert()不支持原始类型数组的问题(pr#874@Gitee)
    • 【core 】 修复HexUtil.isHexNumber()判断逻辑超出long的精度问题(issue#I62H7K@Gitee)
    • 【core 】 修复BiMap中未重写computeIfAbsent和putIfAbsent导致双向查找出问题(issue#I62X8O@Gitee)
    • 【json 】 修复JSON解析栈溢出部分问题(issue#2746@Github)
    • 【json 】 修复getMultistageReverseProxyIp未去除空格问题(issue#I64P9J@Gitee)
    • 【db 】 修复NamedSql中in没有判断大小写问题(issue#2792@Github)
    • 【core 】 修复ZIP bomb漏洞(issue#2797@Github)
    • 【core 】 修复JSONXMLSerializer将Json转为XML时,遇到嵌套需要递归情况时会丢失contentKeys问题(pr#903@Gitee)
    • 【db 】 修复使用mariadb通过jdbcurl创建SimpleDataSource报NullPointException(pr#900@Gitee)
    • 【core 】 修复UrlBuilder中参数中包括"://"判断错误问题(pr#898@Gitee)
    • 【core 】 修复IndexedComparator导致的数据错乱问题(ExcelWriter使用部分别名导致字段丢失)(issue#I66Z6B@Gitee)
    • 【crypto】 修复sm2构造方法NullPointerException(pr#2820@Github)
    • 【core 】 修复ConverterRegistry中无效加载导致的问题(issue#2812@Github)
    • 【core 】 修复CoordinateUtil坐标转换参数错误(pr#895@Gitee)
    Source code(tar.gz)
    Source code(zip)
  • 5.8.10(Nov 17, 2022)

    5.8.10 (2022-11-17)

    🐣新特性

    • 【http 】 HttpResponse增加getFileNameFromDisposition方法(pr#2676@Github)
    • 【core 】 FileUtil.copy,当来源为文件时,返回文件而非目录(issue#I5YCVL@Gitee)
    • 【db 】 DialectFactory增加identifyDriver重载(issue#I5YWI6@Gitee)
    • 【core 】 去除ClassloaderUtil的Cache(issue#I5YWI6@Gitee)
    • 【core 】 ClassScanner 增加忽略加载错误类的扫描方法(pr#855@Gitee)
    • 【core 】 DateUtil和LocalDateTimeUtil添加区间退化为点,点与区间,点与点之间关系判断。(pr#2725@Github)
    • 【http 】 UserAgentUtil增加对钉钉PC端的支持(issue#I60UOP@Gitee)
    • 【extra 】 兼容ZipArchiveInputStream多参数情况(issue#2736@Github)

    🐞Bug修复

    • 【db 】 修复分页时order by截断问题(issue#I5X6FM@Gitee)
    • 【core 】 修复Partition计算size除数为0报错问题(pr#2677@Github)
    • 【core 】 由于对于ASCII的编码解码有缺陷,且这种BCD实现并不规范,因此BCD标记为弃用(issue#I5XEC6@Gitee)
    • 【core 】 修复IoUtil.copyByNIO方法写出时没有flush的问题
    • 【core 】 修复TreeBuilder中使用HashMap导致默认乱序问题(issue#I5Z8C5@Gitee)
    • 【core 】 修复StrUtil.subWithLength负数问题(issue#I5YN49@Gitee)
    • 【core 】 修复DefaultTrustManager空指针问题(issue#2716@Github)
    • 【core 】 修复时间轮添加任务线程安全问题(pr#2712@Github)
    • 【core 】 修复 BeanUtil#copyProperties 源对象与目标对象都是 Map 时设置忽略属性无效问题(pr#2698@Github)
    • 【core 】 修复ChineseDate传入农历日期非闰月时获取公历错误问题(issue#I5YB1A@Gitee)
    • 【core 】 修复key为弱引用 value为强引用 会导致key无法被回收 弱引用失效问题(pr#2723@Github)
    • 【core 】 修复BeanUtil.copyProperties 包含EnumSet ,类型转换异常问题(pr#2684@Github)
    • 【extra 】 修复Ftp.uploadFileOrDirectory上传目录错误调用错误问题(issue#I5R2DE@Gitee)
    • 【extra 】 修复字节数组转float 返回类型却是double的bug(pr#867@Gitee)
    Source code(tar.gz)
    Source code(zip)
  • 5.8.9(Oct 22, 2022)

    5.8.9 (2022-10-22)

    🐣新特性

    • 【core 】 DateUtil增加isLastDayOfMonth、getLastDayOfMonth方法(pr#824@Gitee)
    • 【core 】 AnnotationUtil类支持Lambda获取某注解属性值(pr#827@Gitee)
    • 【core 】 CharUtil.isBlank添加Hangul Filler字符(issue#I5UGSQ@Gitee)
    • 【poi 】 优化合并单元格读取(issue#I5UJZ1@Gitee)
    • 【extra 】 增加QLExpress支持(issue#2653@Github)
    • 【core 】 UrlBuilder增加getPortWithDefault方法(pr#835@Gitee)
    • 【core 】 FuncKeyMap的子类,传入可被序列化的keyFunc(pr#838@Gitee)
    • 【extra 】 SpringUtil支持SpringBoot3自动配置(pr#839@Gitee)
    • 【core 】 CollectorUtil添加支持对值集合进行映射的分组方法(pr#844@Gitee)
    • 【core 】 FileTypeUtil增加ppt识别(issue#2663@Github)

    🐞Bug修复

    • 【poi 】 修复ExcelReader读取只有标题行报错问题(issue#I5U1JA@Gitee)
    • 【http 】 修复Http重定向时相对路径导致的问题(issue#I5TPSY@Gitee)
    • 【http 】 修复Http重定全局设置无效问题(pr#2639@Github)
    • 【core 】 修复ReUtil.replaceAll替换变量错误问题(pr#2639@Github)
    • 【core 】 修复FileNameUtil.mainName二级扩展名获取错误问题(issue#2642@Github)
    • 【cache 】 修复LRUCache移除事件监听失效问题(issue#2647@Github)
    • 【core 】 修复MapToMap中ignoreNullValue无效问题(issue#2647@Github)
    • 【core 】 修复ReflectUtil.invokeRaw方法转换失败抛出异常问题(pr#837@Gitee)
    • 【core 】 修复TableMap没有default方法导致的问题(issue#I5WMST@Gitee)
    Source code(tar.gz)
    Source code(zip)
  • 5.8.8(Sep 26, 2022)

    5.8.8 (2022-09-26)

    🐣新特性

    • 【core 】 StreamUtil.of方法新增对 Iterator 支持;StreamUtil.of(Iterable) 方法优化(pr#807@Gitee)
    • 【core 】 增加.wgt格式的MimeType(pr#2617@Github)
    • 【core 】 EnumUtil.getBy增加带默认值重载(issue#I5RZU6@Gitee)
    • 【core 】 ModifierUtil和ReflectUtil增加removeFinalModify(pr#810@Gitee)
    • 【core 】 AbsCollValueMap添加removeValue和removeValues方法,用于list value值移除(pr#813@Gitee)
    • 【extra 】 hutool-extra ftp 支持上传文件或目录(pr#821@Gitee)
    • 【core 】 CharsetDetector增加默认识别的长度(issue#2547@Github)

    🐞Bug修复

    • 【core 】 修复FileNameUtil.cleanInvalid无法去除换行符问题(issue#I5RMZV@Gitee)
    • 【core 】 修复murmur3_32实现错误(pr#2616@Github)
    • 【core 】 修复PunyCode处理域名的问题(pr#2620@Github)
    • 【core 】 修复ObjectUtil.defaultIfNull去掉误加的deprecated(issue#I5SIZT@Gitee)
    • 【core 】 修复ReflectUtil 反射方法中桥接判断问题(issue#2625@Github)
    • 【poi 】 修复ExcelWriter导出List引起的个数混乱问题(issue#2627@Github)
    • 【poi 】 修复ExcelReader读取时间变成12小时形式问题(issue#I5Q1TW@Gitee)
    • 【db 】 修复DB工具分页查询的时候oracle数据库会把ROWNUM_也带出来问题(issue#2618@Github)
    • 【crypto 】 修复部分环境下使用 Bouncy Castle可能的JCE cannot authenticate the provider BC问题(issue#2631@Github)
    Source code(tar.gz)
    Source code(zip)
  • 5.8.7(Sep 15, 2022)

    5.8.7 (2022-09-15)

    🐣新特性

    • 【core 】 BooleanUtil的andOfWrap和orOfWrap()忽略null(issue#2599@Github)
    • 【jwt 】 优化JWT自动识别header中的算法,并可自定义header中key的顺序(issue#I5QRUO@Gitee)
    • 【core 】 IdcardUtil增加convert18To15方法(issue#I5QYCP@Gitee)
    • 【core 】 新增AnsiColors(改自Spring Boot)、AnsiColorWrapper,优化QrCodeUtil(pr#778@Gitee)
    • 【core 】 TemplateUtil的实现类增加getRawEngine方法(issues#2530@Github)
    • 【core 】 ImgUtil中颜色相关方法剥离到ColorUtil中
    • 【core 】 增加SafeConcurrentHashMap

    🐞Bug修复

    • 【core 】 修复ObjectUtil.defaultIfXXX中NPE问题(pr#2603@Github)
    • 【db 】 修复Hive2驱动无法识别问题(issue#2606@Github)
    • 【core 】 修复computeIfAbsent问题(issue#I5PTN3@Gitee)
    • 【extra 】 修复Ftp中路径问题(issue#I5R2DE@Gitee)
    • 【core 】 修复ConcurrentHashMap.computeIfAbsent缺陷导致的问题
    • 【core 】 修复DateUtil.parseUTC时对-的处理问题(issue#2612@Github)
    • 【core 】 修复Convert.chineseMoneyToNumber角分丢失问题(issue#2611@Github)
    Source code(tar.gz)
    Source code(zip)
  • 5.8.6(Sep 5, 2022)

    5.8.6 (2022-09-05)

    ❌不兼容特性

    • 【json 】 由于设计缺陷,导致JSONObject#write方法中Filter中key的泛型不得已变动为Object,以解决无法递归的bug(issue#I5OMSC@Gitee)

    🐣新特性

    • 【core 】 CollUtil新增addIfAbsent方法(pr#750@Gitee)
    • 【core 】 DateUtil.parseUTC支持只有时分的格式(issue#I5M6DP@Gitee)
    • 【core 】 NumberUtil.parseInt忽略科学计数法(issue#I5M55F@Gitee)
    • 【core 】 IterUtil.getFirst优化(pr#753@Gitee)
    • 【core 】 增加Tree add 类型校验(pr#2542@Github)
    • 【core 】 增加PunyCode处理完整域名(pr#2543@Github)
    • 【core 】 增加替换字符串中第一个指定字符串和最后一个指定字符串方法(pr#2533@Github)
    • 【jwt 】 JWT补充部分算法(pr#2546@Github)
    • 【core 】 NumberUtil.roundStr() 修改为使用toPlainString(pr#775@Gitee)
    • 【extra 】 QrCodeUtil新增SVG格式、Ascii Art字符画格式(pr#763@Gitee)
    • 【jwt 】 JWTUtil的parseToken增加空值异常抛出(issue#I5OCQB@Gitee)
    • 【extra 】 resource.loader等过期参数替换(issue#2571@Github)
    • 【core 】 添加ObjectUtil的别名工具类ObjUtil
    • 【core 】 扩展LocalDateTimeUtil.isIn方法使用场景(pr#2589@Github)
    • 【core 】 MapUtil增加根据entry分组(pr#2591@Github)
    • 【core 】 优化 getProcessorCount 潜在的获取不到的问题(pr#792@Gitee)
    • 【core 】 ImgUtil增加sliceByRowsAndCols重载方法支持自定义图片格式(pr#793@Gitee)

    🐞Bug修复

    • 【http 】 修复https下可能的Patch、Get请求失效问题(issue#I3Z3DH@Gitee)
    • 【core 】 修复RandomUtil#randomString 入参length为负数时报错问题(issue#2515@Github)
    • 【core 】 修复SecureUtil传入null的key抛出异常问题(pr#2521@Github)
    • 【core 】 修复UrlBuilder的toURI方法将url重复编码(issue#2503@Github)
    • 【core 】 修复CollUtil.lastIndexOf序号错误问题
    • 【core 】 修复zip被识别成jar和apk被识别成jar或zip的问题(pr#2548@Github)
    • 【core 】 修复UrlBuilder.addPath 方法传入非有效路径字符串时,会出现空指针异常的问题(issue#I5O4ML@Gitee)
    • 【core 】 修复FilterIter当参数filter为空时存在问题(issue#I5OG7U@Gitee)
    • 【poi 】 修复Excel读取提示信息错误(issue#I5OSFC@Gitee)
    • 【json 】 解决JSONObject#write无法递归的bug(issue#I5OMSC@Gitee)
    • 【json 】 修复DayOfWeek转json异常问题(issue#2572@Github)
    • 【extra 】 Ftp方法isDir和exist修复及改进(pr#2574@Github)
    • 【json 】 修复JSON反序列化时,引用字段类型的自定义JsonDeserializer无效(issue#2555@Github)
    Source code(tar.gz)
    Source code(zip)
  • 5.8.5(Jul 29, 2022)

    5.8.5 (2022-07-29)

    ❌不兼容特性

    • 【core 】 合成注解相关功能重构,增加@Link及其子注解(pr#702@Gitee)

    🐣新特性

    • 【core 】 NumberUtil新增isIn方法(pr#669@Gitee)
    • 【core 】 修复注解工具类getAnnotations的NPE问题,注解扫描器添新功能(pr#671@Gitee)
    • 【core 】 合成注解SyntheticAnnotation提取为接口,并为实现类添加注解选择器和属性处理器(pr#678@Gitee)
    • 【core 】 增加BeanValueProvider(issue#I5FBHV@Gitee)
    • 【core 】 Convert工具类中,新增中文大写数字金额转换为数字工具方法(pr#674@Gitee)
    • 【core 】 新增CollectorUtil.reduceListMap()(pr#676@Gitee)
    • 【core 】 CollStreamUtil为空返回空的集合变为可编辑(pr#681@Gitee)
    • 【core 】 增加StrUtil.containsAll(pr#2437@Github)
    • 【core 】 ForestMap添加getNodeValue方法(pr#699@Gitee)
    • 【http 】 优化HttpUtil.isHttp判断,避免NPE(pr#698@Gitee)
    • 【core 】 修复Dict#containsKey方法没区分大小写问题(pr#697@Gitee)
    • 【core 】 增加比较两个LocalDateTime是否为同一天(pr#693@Gitee)
    • 【core 】 增加TemporalAccessorUtil.isIn、LocalDateTimeUtil.isIn(issue#I5HBL0@Gitee)
    • 【core 】 ReUtil增加getAllGroups重载(pr#2455@Github)
    • 【core 】 PageUtil#totalPage增加totalCount为long类型的重载方法(pr#2442@Github)
    • 【crypto 】 PemUtil.readPemPrivateKey支持pkcs#1格式,增加OpensslKeyUtil(pr#2456@Github)
    • 【core 】 添加了通用的注解扫描器 GenericAnnotationScanner,并在 AnnotationScanner 接口中统一提供了提前配置好的扫描器静态实例(pr#715@Github)
    • 【json 】 JSONConfig增加允许重复key配置,解决不规整json序列化的问题(pr#720@Github)
    • 【core 】 完善了codec包下一些方法的入参空校验(pr#719@Gitee)
    • 【extra 】 完善QrCodeUtil对于DATA_MATRIX生成的形状随机不可指定的功能(pr#722@Gitee)
    • 【core 】 修改NetUtil.ipv6ToBigInteger,原方法标记为过期(pr#2485@Github)
    • 【core 】 ZipUtil新增zip文件解压大小限制,防止zip炸弹(pr#726@Gitee)
    • 【core 】 CompressUtil增加压缩和解压tgz(.tar.gz)文件(issue#I5J33E@Gitee)

    🐞Bug修复

    • 【core 】 修复CollUtil里面关于可变参数传null造成的crash问题(pr#2428@Github)
    • 【socket 】 修复异常socket没有关闭问题(pr#690@Gitee)
    • 【core 】 修复当时间戳为Integer时时间转换问题(pr#2449@Github)
    • 【core 】 修复bmp文件判断问题(issue#I5H93G@Gitee)
    • 【core 】 修复CombinationAnnotationElement造成递归循环(issue#I5FQGW@Gitee)
    • 【core 】 修复Dict缺少putIfAbsent、computeIfAbsent问题(issue#I5FQGW@Gitee)
    • 【core 】 修复Console.log应该把异常信息输出位置错误问题(pr#716@Gitee)
    • 【core 】 修复UrlBuilder无法配置末尾追加“/”问题(issue#2459@Github)
    • 【core 】 修复SystemPropsUtil.getBoolean方法应该只有值为true时才返回true,其他情况都应该返回false(pr#717@Gitee)
    • 【core 】 修复isBase64判断不准确的问题(pr#727@Gitee)
    • 【core 】 修复Convert#toMap默认转成HashMap的问题(pr#729@Gitee)
    Source code(tar.gz)
    Source code(zip)
  • 5.8.4(Jun 27, 2022)

    5.8.4 (2022-06-27)

    🐣新特性

    • 【extra 】 Sftp增加构造重载,支持超时(pr#653@Gitee)
    • 【core 】 BeanUtil增加isCommonFieldsEqual(pr#653@Gitee)
    • 【json 】 修改byte[]统一转换为数组形式(issue#2377@Github)
    • 【http 】 HttpResponse增加body方法,支持自定义返回内容(pr#655@Gitee)
    • 【core 】 修改ObjectUtil.isNull逻辑(issue#I5COJF@Gitee)
    • 【core 】 BlockPolicy增加线程池关闭后的逻辑(pr#660@Gitee)
    • 【core 】 Ipv4Util增加ipv4ToLong重载(pr#661@Gitee)
    • 【core 】 LocalDateTimeUtil.parse改为blank检查(issue#I5CZJ9@Gitee)
    • 【core 】 BeanPath在空元素时默认加入map,修改根据下标类型赋值List or map(issue#2362@Github)
    • 【core 】 localAddressList 添加重构方法(pr#665@Gitee)
    • 【cron 】 从配置文件加载任务时,自定义ID避免重复从配置文件加载(issue#I5E7BM@Gitee)
    • 【core 】 新增注解扫描器和合成注解(pr#654@Gitee)

    🐞Bug修复

    • 【extra 】 修复createExtractor中抛出异常后流未关闭问题(pr#2384@Github)
    • 【core 】 修复CsvData.getHeader没有判空导致空指针问题(issue#I5CK7Q@Gitee)
    • 【core 】 修复单字母转换为数字的问题(issue#I5C4K1@Gitee)
    • 【core 】 修复IterUtil.filter无效问题
    • 【core 】 修复NumberUtil传入null,返回了true(issue#I5DTSL@Gitee)
    • 【core 】 修复NumberUtil.isDouble问题(pr#2400@Github)
    • 【core 】 修复ZipUtil使用append替换文件时,父目录存在报错问题(issue#I5DRU0@Gitee)
    Source code(tar.gz)
    Source code(zip)
  • 5.8.3(Jun 10, 2022)

    5.8.3 (2022-06-10)

    🐣新特性

    • 【extra 】 mail增加writeTimeout参数支持(issue#2355@Github)
    • 【core 】 FileTypeUtil增加pptx扩展名支持(issue#I5A0GO@Gitee)
    • 【core 】 IterUtil.get增加判空(issue#I5B12A@Gitee)
    • 【core 】 FileTypeUtil增加webp类型判断(issue#I5BGTF@Gitee)

    🐞Bug修复

    • 【core 】 修复NumberUtil.isXXX空判断错误(issue#2356@Github)
    • 【core 】 修复Convert.toSBC空指针问题(issue#I5APKK@Gitee)
    • 【json 】 修复Bean中存在bytes,无法转换问题(issue#2365@Github)
    • 【core 】 ArrayUtil.setOrAppend()传入空数组时,抛出异常(issue#I5APJE@Gitee)
    • 【extra 】 JschSessionPool修复空指针检查问题(issue#I5BK4D@Gitee)
    • 【core 】 修复使用ValueProvider中setFieldMapping无效问题(issue#I5B4R7@Gitee)
    • 【json 】 修复byte[]作为JSONArray构造问题(issue#2369@Github)
    Source code(tar.gz)
    Source code(zip)
  • 5.8.2(May 27, 2022)

    5.8.2 (2022-05-27)

    🐣新特性

    • 【core 】 BeanUtil拷贝对象增加空检查(issue#I58CJ3@Gitee)
    • 【db 】 Column#size改为long
    • 【core 】 ClassUtil增加isInterface等方法(pr#623@Gitee)
    • 【socket 】 增加ChannelUtil

    🐞Bug修复

    • 【extra 】 修复SshjSftp初始化未能代入端口配置问题(issue#2333@Github)
    • 【core 】 修复Convert.numberToSimple转换问题(issue#2334@Github)
    • 【core 】 修复TemporalAccessorConverter导致的转换问题(issue#2341@Github)
    • 【core 】 修复NumberUtil除法空指针问题(issue#I58XKE@Gitee)
    • 【core 】 修复CAR_VIN正则(pr#624@Gitee)
    • 【db 】 修复count查询别名问题(issue#I590YB@Gitee)
    • 【json 】 修复json中byte[]无法转换问题(issue#I59LW4@Gitee)
    • 【core 】 修复NumberUtil.isXXX未判空问题(issue#2350@Github)
    • 【core 】 修复Singleton中ConcurrentHashMap在JDK8下的bug引起的可能的死循环问题(issue#2349@Github)
    Source code(tar.gz)
    Source code(zip)
  • 5.8.1(May 16, 2022)

    5.8.1 (2022-05-16)

    🐣新特性

    • 【core 】 BooleanUtil增加toBooleanObject方法(issue#I56AG3@Gitee)
    • 【core 】 CharSequenceUtil增加startWithAnyIgnoreCase方法(issue#2312@Github)
    • 【system 】 JavaInfo增加版本(issue#2310@Github)
    • 【core 】 新增CastUtil(pr#2313@Github)
    • 【core 】 ByteUtil新增bytesToShort重载(issue#I57FA7@Gitee)
    • 【core 】 ReflectUtil.invoke方法抛出运行时异常增加InvocationTargetRuntimeException(issue#I57GI2@Gitee)
    • 【core 】 NumberUtil.parseNumber支持16进制(issue#2328@Github)

    🐞Bug修复

    • 【core 】 MapUtil.map对null友好,且修复了测试用例中分组问题(pr#614@Gitee)
    • 【core 】 修复BeanUtil.beanToMap中properties为null的空指针问题(issue#2303@Github)
    • 【db 】 DialectName中修正为POSTGRESQL(issue#2308@Github)
    • 【core 】 修复BeanPath无法识别引号内的内容问题(issue#I56DE0@Gitee)
    • 【core 】 修复Map.entry方法返回可变不可变相反问题
    • 【jwt 】 修复jwt的过期容忍时间问题(issue#2329@Gitee)
    Source code(tar.gz)
    Source code(zip)
  • 5.8.0(May 6, 2022)

    5.8.0 (2022-05-06)

    ❌不兼容特性

    • 【extra 】 升级jakarta.validation-api到3.x,包名变更导致不能向下兼容
    • 【core 】 BeanUtil删除了beanToMap(Object)方法,因为有可变参数的方法,这个删除可能导致直接升级找不到方法,重新编译项目即可。

    🐣新特性

    • 【core 】 Singleton增加部分方法(pr#609@Gitee)
    • 【core 】 BeanUtil增加beanToMap重载(pr#2292@Github)
    • 【core 】 Assert增加对应的equals及notEquals方法(pr#612@Gitee)
    • 【core 】 Assert增加对应的equals及notEquals方法(pr#612@Gitee)
    • 【core 】 DigestUtil增加sha512方法(issue#2298@Github)

    🐞Bug修复

    • 【db 】 修复RedisDS无法设置maxWaitMillis问题(issue#I54TZ9@Gitee)
    Source code(tar.gz)
    Source code(zip)
  • 5.8.0.M4(Apr 27, 2022)

    5.8.0.M4 (2022-04-27)

    ❌不兼容特性

    • 【json 】 【可能兼容问题】JSONArray删除部分构造
    • 【json 】 【可能兼容问题】JSONTokener使用InputStream作为源时,由系统编码变更为UTF-8

    🐣新特性

    • 【core 】 BeanUtil增加toBean重载(pr#598@Gitee)
    • 【json 】 新增JSONParser
    • 【json 】 JSON新增在解析时的过滤方法(issue#I52O85@Gitee)
    • 【core 】 添加ArrayUtil.distinct、CollUtil.distinct重载(issue#2256@Github)
    • 【core 】 添加TransMap、FuncMap、ReferenceConcurrentMap、WeakConcurrentMap
    • 【json 】 添加ObjectMapper
    • 【core 】 CHINESE_NAME正则条件放宽(pr#599@Gitee)
    • 【extra 】 增加JakartaServletUtil(issue#2271@Github)
    • 【poi 】 ExcelWriter支持重复别名的数据写出(issue#I53APY@Gitee)
    • 【core 】 增加Hashids(issue#I53APY@Gitee)
    • 【core 】 ReflectUtil.newInstanceIfPossible添加枚举、数组等类型的默认实现
    • 【core 】 CombinationAnnotationElement增加过滤(pr#605@Gitee)
    • 【all 】 精简CHANGELOG
    • 【core 】 新增AnsiEncoder
    • 【log 】 新增彩色日式输出风格ConsoleColorLog(pr#607@Gitee)

    🐞Bug修复

    • 【core 】 修复StrUtil.firstNonX非static问题(issue#2257@Github)
    • 【core 】 修复SimpleCache线程安全问题
    • 【core 】 修复ClassLoaderUtil中可能的关联ClassLoader错位问题
    • 【extra 】 修复Sftp错误内容解析大小写问题(issue#I53GPI@Gitee)
    • 【core 】 修复Tailer当文件内容为空时,会报异常问题(pr#602@Gitee)
    Source code(tar.gz)
    Source code(zip)
  • 5.8.0.M2(Apr 1, 2022)

    5.8.0.M2 (2022-04-02)

    ❌不兼容特性

    • 【extra 】 【可能兼容问题】BeanCopierCache的key结构变更
    • 【http 】 【可能兼容问题】HttpInterceptor增加泛型标识,HttpRequest中配置汇总于HttpConfig
    • 【core 】 【可能兼容问题】UrlQuery.addQuery参数2从String变更为Object
    • 【core 】 【可能兼容问题】WorkbookUtil.createBook实现改为WorkbookFactory.create

    🐣新特性

    • 【core 】 MapUtil增加entry、ofEntries方法
    • 【core 】 ZipWriter增加add方法重载
    • 【core 】 IterUtil增加filtered,增加FilterIter(issue#2228)
    • 【core 】 增加NodeListIter、ResettableIter
    • 【crypto 】 HmacAlgorithm增加SM4CMAC(issue#2206@Github)
    • 【http 】 增加HttpConfig,响应支持拦截(issue#2217@Github)
    • 【core 】 增加BlockPolicy,ThreadUtil增加newFixedExecutor方法(pr#2231@Github)
    • 【crypto 】 BCMacEngine、Mac、CBCBlockCipherMacEngine、SM4MacEngine(issue#2206@Github)

    🐞Bug修复

    • 【core 】 IdcardUtil#getCityCodeByIdCard位数问题(issue#2224@Github)
    • 【core 】 修复urlWithParamIfGet函数逻辑问题(issue#I50IUD@Gitee)
    • 【core 】 修复IoUtil.readBytes限制长度读取问题(issue#2230@Github)
    • 【http 】 修复HttpRequest中编码对URL无效的问题(issue#I50NHQ@Gitee)
    • 【poi 】 修复读取excel抛NPE错误(pr#2234@Github)
    Source code(tar.gz)
    Source code(zip)
  • 5.8.0.M1(Mar 28, 2022)

    5.8.0 (2022-03-28)

    ❌不兼容特性

    • 【db 】 【不向下兼容 】增加MongoDB4.x支持返回MongoClient变更(pr#568@Gitee)
    • 【json 】 【可能兼容问题】修改JSONObject结构,继承自MapWrapper
    • 【core 】 【可能兼容问题】BeanCopier重构,新建XXXCopier,删除XXXValueProvider
    • 【core 】 【可能兼容问题】URLEncoder废弃,URLEncoderUtil使用RFC3986
    • 【core 】 【可能兼容问题】Base32分离编码和解码,以便减少数据加载,支持Hex模式
    • 【core 】 【可能兼容问题】Base58分离编码和解码
    • 【core 】 【可能兼容问题】Base62分离编码和解码,增加inverted模式支持
    • 【core 】 【兼容问题 】PunyCode参数由String改为Charsequence
    • 【cron 】 【可能兼容问题】SimpleValueParser改名为AbsValueParser,改为abstract
    • 【poi 】 【可能兼容问题】ExcelUtil.getBigWriter返回值改为BigExcelWriter
    • 【core 】 【可能兼容问题】Opt.ofEmptyAble参数由List改为Collection子类(pr#580@Gitee)
    • 【json 】 【可能兼容问题】JSON转Bean时,使用JSON本身的相关设置,而非默认(issue#2212@Github)
    • 【json 】 【可能兼容问题】JSONConfig中isOrder废弃,默认全部有序

    🐣新特性

    • 【http 】 HttpRequest.form采用TableMap方式(issue#I4W427@Gitee)
    • 【core 】 AnnotationUtil增加getAnnotationAlias方法(pr#554@Gitee)
    • 【core 】 FileUtil.extName增加对tar.gz特殊处理(issue#I4W5FS@Gitee)
    • 【crypto 】 增加XXTEA实现(issue#I4WH2X@Gitee)
    • 【core 】 增加Table实现(issue#2179@Github)
    • 【core 】 增加UniqueKeySet(issue#I4WUWR@Gitee)
    • 【core 】 阿拉伯数字转换成中文对发票票面金额转换的扩展(pr#570@Gitee)
    • 【core 】 ArrayUtil增加replace方法(pr#570@Gitee)
    • 【core 】 CsvReadConfig增加自定义标题行行号(issue#2180@Github)
    • 【core 】 FileAppender优化初始List大小(pr#2197@Github)
    • 【core 】 Base32增加pad支持(pr#2195@Github)
    • 【core 】 Dict增加setFields方法(pr#578@Gitee)
    • 【db 】 新加db.meta的索引相关接口(pr#563@Gitee)
    • 【db 】 Oracle中Column#typeName后的长度去掉(pr#563@Gitee)
    • 【poi 】 优化ExcelReader,采用只读模式(pr#2204@Gitee)
    • 【poi 】 优化ExcelBase,将alias放入
    • 【poi 】 优化ExcelBase,将alias放入
    • 【core 】 改进StrUtil#startWith、endWith性能
    • 【cron 】 增加CronPatternParser、MatcherTable
    • 【http 】 GlobalHeaders增加系统属性allowUnsafeServerCertChange、allowUnsafeRenegotiation
    • 【http 】 UserAgentUtil 解析,增加MiUI/XiaoMi浏览器判断逻辑(pr#581@Gitee)
    • 【core 】 FileAppender添加锁构造(pr#2211@Github)
    • 【poi 】 ExcelReader增加构造(pr#2213@Github)
    • 【core 】 MapUtil提供change函数,EnumUtil提供getBy函数,通过lambda进行枚举字段映射(pr#583@Gitee)
    • 【core 】 CompareUtil增加comparingIndexed(pr#585@Gitee)
    • 【db 】 DruidDataSource构建时支持自定义参数(issue#I4ZKCW@Gitee)
    • 【poi 】 ExcelWriter增加addImg重载(issue#2218@Github)
    • 【bloomFilter】 增加FuncFilter
    • 【http 】 增加GlobalInterceptor(issue#2217)

    🐞Bug修复

    • 【core 】 修复ObjectUtil.hasNull传入null返回true的问题(pr#555@Gitee)
    • 【core 】 修复NumberConverter对数字转换的问题(issue#I4WPF4@Gitee)
    • 【core 】 修复ReflectUtil.getMethods获取接口方法问题(issue#I4WUWR@Gitee)
    • 【core 】 修复NamingCase中大写转换问题(pr#572@Gitee)
    • 【http 】 修复GET重定向时,携带参数问题(issue#2189@Github)
    • 【core 】 修复FileUtil、FileCopier相对路径获取父路径错误问题(pr#2188@Github)
    • 【core 】 修复CopyOptions中fieldNameEditor无效问题(issue#2202@Github)
    • 【json 】 修复JSON对Map.Entry的解析问题
    • 【core 】 修复MapConverter中map与map转换兼容问题
    • 【poi 】 解决sax读取时,POI-5.2.x兼容性问题
    • 【core 】 修复判断两段时间区间交集问题(pr#2210@Github)
    • 【http 】 修复标签误删问题(issue#I4Z7BV@Gitee)
    • 【core 】 修复Win下文件名带*问题(pr#584@Gitee)
    • 【core 】 FileUtil.getMimeType增加rar、7z支持(issue#I4ZBN0@Gitee)
    • 【json 】 JSON修复transient设置无效问题(issue#2212@Github)
    • 【core 】 修复IterUtil.getElementType获取结果为null的问题(issue#2222@Github)
    • 【core 】 修复农历转公历在闰月时错误(issue#I4ZSGJ@Gitee)
    Source code(tar.gz)
    Source code(zip)
  • 5.7.22(Mar 1, 2022)

    🐣新特性

    • 【poi 】 ExcelUtil.readBySax增加对POI-5.2.0的兼容性(issue#I4TJF4@gitee)
    • 【extra 】 Ftp增加构造(issue#I4TKXP@gitee)
    • 【core 】 GenericBuilder支持Map构建(pr#540@Github)
    • 【json 】 新增TemporalAccessorSerializer
    • 【core 】 使多个xxxBuilder实现Builder接口,扩展CheckedUtil(pr#545@Gitee)
    • 【core 】 CheckedUtil删除第二个参数为RuntimeException的方法
    • 【core 】 FileUtil增加getTotalLines方法
    • 【db 】 MetaUtil增加getTableMeta重载(issue#2157@Github)
    • 【http 】 增加HttpGlobalConfig.setDecodeUrl(issue#I4U8YQ@Gitee)
    • 【core 】 增加Base58(pr#2162@Github)
    • 【core 】 增加AntPathMatcher(issue#I4T7K5@Gitee)
    • 【core 】 StrJoiner修改toString策略,调用不再修改Appendable
    • 【core 】 StrJoiner增加length和merge方法
    • 【core 】 CRC16增加getHexValue方法(issue#I4VO3U@Gitee)

    🐞Bug修复

    • 【cache 】 修复ReentrantCache.toString方法线程不安全问题(issue#2140@Github)
    • 【core 】 修复SystemPropsUtil.getInt返回long问题(pr#546@Gitee)
    • 【crypto 】 修复SM2.getD前导0问题(pr#2149@Github)
    • 【core 】 修复ChineseDate在1970年之前农历差一天问题(issue#I4UTPK@Gitee)
    • 【core 】 修复CoordinateUtil精准问题及转换bug(pr#551@Gitee)
    • 【json 】 修复JSONObject解析XML后没有返回的bug(issue#2160@Github)
    • 【extra 】 修复GanymedUtil错误信息读取位置问题(issue#I4VDZ2@Gitee)
    Source code(tar.gz)
    Source code(zip)
  • 5.7.21(Feb 13, 2022)

    5.7.21 (2022-02-14)

    🐣新特性

    • 【extra 】 增加jetbrick模板支持
    • 【extra 】 EmojiUtil增加方法(pr#519@Gitee)
    • 【core 】 DateUtil 添加两个日期是否同一周方法(pr#516@Gitee)
    • 【db 】 新增条件组,用于处理复杂的where条件(pr#514@Gitee)
    • 【core 】 新增LocalDateTimeUtil.weekOfYear(issue#I4RWXC@Gitee)
    • 【core 】 Month增加toJdkMonth、getValueBaseOne
    • 【core 】 CsvWriter修改规则,去除末尾多余换行符(issue#I4RSQY@Gitee)
    • 【core 】 DateUtil增加rangeFunc和rangeConsume(issue#I4RSQY@Gitee)
    • 【core 】 DateTime增加setUseJdkToStringStyle方法
    • 【core 】 CharSequenceUtil增加replace重载(issue#2122@Github)
    • 【core 】 IntMap和LongMap使用位运算快速求解取余运算(pr#2123@Github)
    • 【core 】 新增通用builder类:GenericBuilder(pr#526@Gitee)
    • 【core 】 新增copySafely方法与mkdirsSafely方法(pr#527@Gitee)
    • 【core 】 新增MetroHash(pr#532@Gitee)
    • 【core 】 SpringUtil增加publishEvent重载(pr#2139@Github)
    • 【core 】 DateUtil增加rangeContains、rangeNotContains(pr#537@Gitee)
    • 【core 】 Resource增加isModified默认方法
    • 【core 】 增加VfsResource
    • 【json 】 JSONConfig增加setKeyComparator、setNatureKeyComparator方法,支持自定义排序(issue#I4RBZ4@Gitee)

    🐞Bug修复

    • 【core 】 修复ChineseDate农历获取正月出现数组越界BUG(issue#2112@Github)
    • 【extra 】 修复EmojiUtil.toHtmlHex()方法(pr#519@Gitee)
    • 【system 】 修复CpuInfo.getUsed()方法(issue#2116@Github)
    • 【dfa 】 修复密集匹配和贪婪匹配冲突问题(issue#2126@Github)
    • 【db 】 修复c3p0丢失信息问题(issue#I4T7XZ@Gitee)
    • 【http 】 修复Action中HttpExchange没有关闭问题
    Source code(tar.gz)
    Source code(zip)
  • 5.7.20(Jan 20, 2022)

    5.7.20 (2022-01-20)

    🐣新特性

    • 【core 】 增加对null值友好的groupingBy操作的Collector实现,可指定map类型(pr#498@Gitee)
    • 【core 】 增加KetamaHash(issue#2084@Github)
    • 【crypto 】 增加SignUtil
    • 【json 】 JSONGetter增加getBeanList方法
    • 【core 】 ObjectUtil 添加三个defaultIfXxxx方法,用于节省CPU及内存损耗(pr#2094@Github)
    • 【db 】 增加单条数据原生upsert语义支持(pr#501@Gitee)
    • 【core 】 在CollectorUtil提交Collectors.toMap的对null友好实现,避免NPE(pr#502@Gitee)
    • 【http 】 增加HttpGlobalConfig.setIgnoreEOFError(issue#2092@Github)
    • 【core 】 RandomUtil.randomStringWithoutStr排除字符串兼容大写字母(pr#503@Gitee)
    • 【core 】 LocalDateTime增加isOverlap方法(pr#512@Gitee)
    • 【core 】 Ipv4Util.getBeginIpLong、getEndIpLong改为public(pr#508@Gitee)

    🐞Bug修复

    • 【core 】 修复setter重载导致匹配错误(issue#2082@Github)
    • 【core 】 修复RegexPool汉字匹配范围小问题(pr#2081@Github)
    • 【core 】 修复OS中的拼写错误(pr#500@Gitee)
    • 【core 】 修复CustomKeyMap的merge失效问题(issue#2086@Github)
    • 【core 】 修复FileUtil.appendLines换行问题(issue#I4QCEZ@Gitee)
    • 【core 】 修复java.time.Month解析问题(issue#2090@Github)
    • 【core 】 修复PathUtil.moveContent移动覆盖导致的问题(issue#I4QV0L@Gitee)
    • 【core 】 修复Opt.ofTry中并发环境下线程安全问题(pr#504@Gitee)
    • 【core 】 修复PatternFinder中end边界判断问题(issue#2099@Github)
    • 【core 】 修复格式化为中文日期时,0被处理为空串(pr#507@Gitee)
    • 【core 】 修复UrlPath转义冒号问题(issue#I4RA42@Gitee)
    Source code(tar.gz)
    Source code(zip)
  • 5.7.19(Jan 7, 2022)

    5.7.19 (2022-01-07)

    🐣新特性

    • 【db 】 优化Condition参数拆分(pr#2046@Github)
    • 【core 】 优化ArrayUtil.isAllEmpty性能(pr#2045@Github)
    • 【core 】 CharSequenceUtil.replace方法支持增补字符(pr#2041@Github)
    • 【extra 】 增加SshjSftp(pr#493@Gitee)
    • 【core 】 增加CheckedUtil(pr#491@Gitee)
    • 【extra 】 增加Sftp.isDir中的抛异常判断条件(issues#I4P9ED@Gitee)

    🐞Bug修复

    • 【http 】 HttpUtil重定向次数失效问题(issue#I4O28Q@Gitee)
    • 【core 】 修复UrlPath空白path多/问题(issue#I49KAL@Gitee)
    • 【core 】 修复ServletUtil写出文件时未添加双引号导致逗号等特殊符号引起的问题(issue#I4P1BF@Gitee)
    • 【core 】 NumberUtil增加equals重载解决long传入判断问题(pr#2064@Github)
    • 【core 】 修复CsvParser行号有误问题(pr#2065@Github)
    • 【http 】 修复HttpRequest.of无法自动添加http前缀问题(issue#I4PEYL@Gitee)
    • 【core 】 修复 CharSequenceUtil.brief(str, maxLength) 方法字符串越界问题,以及 maxLength 部分值时结果与预期不符的问题(pr#2068@Github)
    • 【core 】 修复NamingCase中转换下划线字母+数字转换问题(issue#2070@Github)
    • 【core 】 修复split空判断不一致问题(pr#496@Gitee)
    • 【crypto 】 修复SM2.getDHex()前导0丢失,然后导致获取密钥错误(pr#2073@Github)
    • 【core 】 修复关于Calculator.conversion()方法EmptyStackException的bug(pr#2076@Github)
    • 【core 】 修复StrUtil.subBetweenAll循环bug(issue#I4PT3M@Gitee)
    Source code(tar.gz)
    Source code(zip)
  • 5.7.18(Dec 24, 2021)

    5.7.18 (2021-12-25)

    🐣新特性

    • 【core 】 新增CollStreamUtil.groupKeyValue(pr#479@Gitee)
    • 【core 】 新增DatePattern.createFormatter(pr#483@Gitee)
    • 【core 】 增加IdUtil.getSnowflakeNextId(pr#485@Gitee)
    • 【log 】 log4j2的编译依赖改为api,core为test依赖(pr#2019@Github)
    • 【core 】 Img.scale缩小默认使用平滑模式,增加scale方法重载可选模式(issue#I4MY6X@Gitee)
    • 【core 】 excel添加写入图片的方法(pr#486@Gitee)
    • 【core 】 增加CollStreamUtil.groupBy(pr#484@Gitee)
    • 【core 】 增加CollUtil.setValueByMap(pr#482@Gitee)
    • 【core 】 LocalDateTimeUtil增加endOfDay重载(issue#2025@Github)
    • 【core 】 IoCopier增加setFlushEveryBuffer方法(issue#2022@Github)

    🐞Bug修复

    • 【core 】 LineReadWatcher#onModify文件清空判断问题(issue#2013@Github)
    • 【core 】 修复4位bytes转换float问题(issue#I4M0E4@Gitee)
    • 【core 】 修复CharSequenceUtil.replace问题(issue#I4M16G@Gitee)
    • 【json 】 修复JSONObject 初始化大小值未被使用问题(issue#2016@Github)
    • 【core 】 修复StrUtil.startWith都为null返回错误问题(issue#I4MV7Q@Gitee)
    • 【core 】 修复PasswdStrength检测问题(issue#I4N48X@Gitee)
    • 【core 】 修复UserAgentUtil解析EdgA无法识别问题(issue#I4MCBP@Gitee)
    • 【extra 】 修复Archiver路径前带/问题(issue#I4NS0F@Gitee)
    • 【extra 】 修复getMainColor方法中参数rgbFilters无效问题(pr#2034@Github)
    • 【core 】 修复ChineseDate无法区分闰月问题(issue#I4NQQW@Gitee)
    • 【core 】 修复BeanDesc大小写误判问题(issue#2009@Github)
    Source code(tar.gz)
    Source code(zip)
  • 5.7.17(Dec 8, 2021)

    5.7.17 (2021-12-09)

    🐣新特性

    • 【core 】 增加AsyncUtil(pr#457@Gitee)
    • 【http 】 增加HttpResource(issue#1943@Github)
    • 【http 】 增加BytesBody、FormUrlEncodedBody
    • 【cron 】 TaskTable.remove增加返回值(issue#I4HX3B@Gitee)
    • 【core 】 Tree增加filter、filterNew、cloneTree、hasChild方法(issue#I4HFC6@Gitee)
    • 【poi 】 增加ColumnSheetReader及ExcelReader.readColumn,支持读取某一列
    • 【core 】 IdCardUtil.isValidCard不再自动trim(issue#I4I04O@Gitee)
    • 【core 】 IdCardUtil.isValidCard不再自动trim(issue#I4I04O@Gitee)
    • 【core 】 改进TextFinder,支持限制结束位置及反向查找模式
    • 【core 】 Opt增加部分方法(pr#459@Gitee)
    • 【core 】 增加DefaultCloneable(pr#459@Gitee)
    • 【core 】 CollStreamUtil增加是否并行的重载(pr#467@Gitee)
    • 【core 】 ResourceClassLoader增加缓存(pr#1959@Github)
    • 【crypto 】 增加CipherWrapper,增加setRandom(issue#1958@Github)
    • 【core 】 Opt增加ofTry方法(pr#1956@Github)
    • 【core 】 DateUtil.toIntSecond标记为弃用(issue#I4JHPR@Gitee)
    • 【db 】 Db.executeBatch标记一个重载为弃用(issue#I4JIPH@Gitee)
    • 【core 】 增加CharSequenceUtil.subPreGbk重载(issue#I4JO2E@Gitee)
    • 【core 】 ReflectUtil.getMethod排除桥接方法(pr#1965@Github)
    • 【http 】 completeFileNameFromHeader在使用path为路径时,自动解码(issue#I4K0FS@Gitee)
    • 【core 】 CopyOptions增加override配置(issue#I4JQ1N@Gitee)
    • 【poi 】 SheetRidReader可以获取所有sheet名(issue#I4JA3M@Gitee)
    • 【core 】 AsyncUtil.waitAny增加返回值(pr#473@Gitee)
    • 【core 】 Calculator.compare改为private(issue#1982@Github)
    • 【core 】 NumberUtil增加isOdd、isEven方法(pr#474@Gitee)
    • 【http 】 增加HttpGlobalConfig.setBoundary,删除MultipartBody.BOUNDARY和getContentType(issue#I4KSLY@Gitee)
    • 【core 】 DateTime增加setMinimalDaysInFirstWeek(issue#1988@Github)
    • 【db 】 Db增加query重载,可支持自定义PreparedStatement,从而支持游标(issue#I4JXWN@Gitee)
    • 【cache 】 CacheObj增加getExpiredTime等方法(issue#I4LE80@Gitee)
    • 【extra 】 Ftp增加backToPwd方法(issue#2004@Github)
    • 【core 】 CollStreamUtil修改集合中null处理问题(pr#478@Gitee)

    🐞Bug修复

    • 【core 】 修复FileResource构造fileName参数无效问题(issue#1942@Github)
    • 【cache 】 修复WeakCache键值强关联导致的无法回收问题(issue#1953@Github)
    • 【core 】 修复ZipUtil相对路径父路径获取null问题(issue#1961@Github)
    • 【http 】 修复HttpUtil.normalizeParams未判空导致的问题(issue#1975@Github)
    • 【poi 】 修复读取日期类型的自定义样式单元格时间结果为1899年问题(pr#1977@Github)
    • 【poi 】 修复SoapClient参数未使用问题
    • 【core 】 修复HashUtil.cityHash128参数未使用问题
    • 【core 】 修复DateUtil.formatChineseDate显示问题(issue#I4KK5F@Gitee)
    • 【poi 】 修复CellUtil.setCellValueStyle空导致值无法写入问题(issue#1995@Github)
    • 【poi 】 修复CellUtil.setComment参数设置错误问题
    • 【core 】 修复QueryBuilder解析路径导致的错误(issue#1989@Github)
    • 【core 】 修复DateTime.between中DateUnit无效问题
    • 【poi 】 修复StyleUtil.getFormat非static问题(issue#I4LGNP@Gitee)
    • 【crypto 】 修复SM2.getD返回bytes包含符号位的问题(issue#2001@Github)
    Source code(tar.gz)
    Source code(zip)
  • 5.7.16(Nov 7, 2021)

    5.7.16 (2021-11-07)

    🐣新特性

    • 【core 】 增加DateTime.toLocalDateTime
    • 【core 】 CharSequenceUtil增加normalize方法(pr#444@Gitee)
    • 【core 】 MailAccount增加setEncodefilename()方法,可选是否编码附件的文件名(issue#I4F160@Gitee)
    • 【core 】 MailAccount中charset增加null时的默认规则
    • 【core 】 NumberUtil.compare修正注释说明(issue#I4FAJ1@Gitee)
    • 【core 】 增加RFC3986类
    • 【extra 】 Sftp增加put和upload重载(issue#I4FGDH@Gitee)
    • 【core 】 TemporalUtil增加toChronoUnit、toTimeUnit方法(issue#I4FGDH@Gitee)
    • 【core 】 StopWatch增加prettyPrint重载(issue#1910@Github)
    • 【core 】 修改RegexPool中Ipv4正则
    • 【json 】 Filter改为MutablePair,以便编辑键值对(issue#1921@Github)
    • 【core 】 Opt增加peeks方法(pr#445@Gitee)
    • 【extra 】 MailAccount中user默认值改为邮箱全称(issue#I4FYVY@Gitee)
    • 【core 】 增加CoordinateUtil(pr#446@Gitee)
    • 【core 】 DateUtil增加rangeToList重载(pr#1925@Github)
    • 【core 】 CollUtil增加safeContains方法(pr#1926@Github)
    • 【core 】 ActualTypeMapperPool增加getStrKeyMap方法(pr#447@Gitee)
    • 【core 】 TreeUtil增加walk方法(pr#1932@Gitee)
    • 【crypto 】 SmUtil增加sm3WithSalt(pr#454@Gitee)
    • 【http 】 增加HttpInterceptor(issue#I4H1ZV@Gitee)
    • 【core 】 Opt增加flattedMap(issue#I4H1ZV@Gitee)

    🐞Bug修复

    • 【core 】 修复UrlBuilder.addPath歧义问题(issue#1912@Github)
    • 【core 】 修复StrBuilder中总长度计算问题(issue#I4F9L7@Gitee)
    • 【core 】 修复CharSequenceUtil.wrapIfMissing预定义长度计算问题(issue#I4FDZ2@Gitee)
    • 【poi 】 修复合并单元格为日期时,导出单元格数据为数字问题(issue#1911@Github)
    • 【core 】 修复CompilerUtil.getFileManager参数没有使用的问题(issue#I4FIO6@Gitee)
    • 【core 】 修复NetUtil.isInRange的cidr判断问题(pr#1917@Github)
    • 【core 】 修复RegexPool中对URL正则匹配问题(issue#I4GRKD@Gitee)
    • 【core 】 修复UrlQuery对于application/x-www-form-urlencoded问题(issue#1931@Github)
    Source code(tar.gz)
    Source code(zip)
  • 5.7.15(Oct 21, 2021)

    5.7.15 (2021-10-21)

    🐣新特性

    • 【db 】 Db.quietSetAutoCommit增加判空(issue#I4D75B@Gitee)
    • 【core 】 增加RingIndexUtil(pr#438@Gitee)
    • 【core 】 Assert增加checkBetween重载(pr#436@Gitee)
    • 【core 】 ReUtil增加命名分组重载(pr#439@Gitee)
    • 【json 】 toString和writer增加Filter(issue#I4DQNQ@Gitee)
    • 【core 】 ContentType增加build重载(pr#1898@Github)
    • 【bom 】 支持scope=import方式引入(issue#1561@Github)
    • 【core 】 新增Hash接口,HashXXX继承此接口
    • 【core 】 ZipUtil增加append方法(pr#441@Gitee)
    • 【core 】 CollUtil增加重载(issue#I4E9FS@Gitee)
    • 【core 】 CopyOptions新增setFieldValueEditor(issue#I4E08T@Gitee)

    🐞Bug修复

    • 【core 】 修复CollUtil.isEqualList两个null返回错误问题(issue#1885@Github)
    • 【poi 】 修复ExcelWriter多余调试信息导致的问题(issue#1884@Github)
    • 【poi 】 修复TemporalAccessorUtil.toInstant使用DateTimeFormatter导致问题(issue#1891@Github)
    • 【poi 】 修复sheet.getRow(y)为null导致的问题(issue#1893@Github)
    • 【cache 】 修复LRUCache线程安全问题(issue#1895@Github)
    • 【crypto 】 修复KeyUtil异常信息参数丢失问题(issue#1902@Github)
    • 【core 】 修复StrUtil.split和splittoArray不一致问题(issue#I4ELU5@Github)
    • 【core 】 修复SymmetricCrypto未关闭CipherOutputStream导致的问题(issue#I4EMST@Gitee)
    • 【core 】 修复QueryBuilder对/转义问题(issue#1904@Github)
    Source code(tar.gz)
    Source code(zip)
  • 5.7.14(Oct 9, 2021)

    5.7.14 (2021-10-09)

    🐣新特性

    • 【extra 】 修复HttpCookie设置cookies的方法,不符合RFC6265规范问题(issue#I4B70D@Gitee)
    • 【http 】 优化Browser版本正则判断
    • 【setting】 增加YamlUtil
    • 【extra 】 SenvenZExtractor改名为SevenZExtractor,增加getFirst、get方法
    • 【core 】 DateConverter修改返回java.util.Date而非DateTime(issue#I4BOAP@Gitee)
    • 【core 】 增加IterableIter、ComputeIter
    • 【core 】 CsvConfig增加disableComment方法(issue#1842@Github)
    • 【core 】 DateTime构造和DateUtil.parse可选是否宽松模式(issue#1849@Github)
    • 【core 】 TreeBuilder增加部分根节点set方法(issue#1848@Github)
    • 【core 】 优化Base64.isBase64方法:减少一次多余的判断(pr#1860@Github)
    • 【cache 】 优化FIFOCache未设置过期策略时,无需遍历判断过期对象(pr#425@Gitee)
    • 【core 】 增加Opt类(pr#426@Gitee)
    • 【core 】 Week增加of重载,支持DayOfWek(pr#1872@Github)
    • 【poi 】 优化read,避免多次创建CopyOptions(issue#1875@Github)
    • 【core 】 优化CsvReader,实现可控遍历(pr#1873@Github)
    • 【core 】 优化Base64.isBase64判断(pr#1879@Github)
    • 【core 】 新增StrFormatter.formatWith(pr#430@Gitee)

    🐞Bug修复

    • 【http 】 修复HttpCookie设置cookies的方法,不符合RFC6265规范问题(pr#418@Gitee)
    • 【http 】 修复Extractor中filter无效问题
    • 【json 】 修复JSONGetter.getJSONArray判断null的问题(issue#I4C15H@Gitee)
    • 【db 】 修复Condition没占位符的情况下sql没引号问题(issue#1846@Github)
    • 【cache 】 修复FIFOCache中remove回调无效问题(pr#1856@Github)
    • 【json 】 修复JSONArray.set中,index为0报错问题(issue#1858@Github)
    • 【core 】 修复FileUtil.checkSlip中getCanonicalPath异常引起的问题(issue#1858@Github)
    Source code(tar.gz)
    Source code(zip)
  • 5.7.13(Sep 17, 2021)

    5.7.13 (2021-09-17)

    🐣新特性

    • 【core 】 CsvReadConfig增加trimField选项(issue#I49M0C@Gitee)
    • 【http 】 HttpBase增加clearHeaders方法(issue#I49P23@Gitee)
    • 【core 】 CsvWriter的write和writeBeans参数改为Iterable(issue#I49O4S@Gitee)
    • 【core 】 BitStatusUtil添加来源声明(issue#1824@Github)
    • 【core 】 UrlQuery.build增加重载,支持可选是否转义(issue#I4AIX1@Gitee)
    • 【core 】 ListUtil增加swapTo和swapElement方法(pr#416@Gitee)
    • 【poi 】 ExcelWriter支持Hyperlink(issue#I49QAL@Gitee)

    🐞Bug修复

    • 【core 】 修复FuncKey函数无效问题
    • 【core 】 修复ImgUtil.copyImage读取网络URL后宽高报错问题(issue#1821@Github)
    • 【core 】 修复StrJoiner.append配置丢失问题(issue#I49K1L@Gitee)
    • 【core 】 修复EscapeUtil特殊字符的hex长度不足导致的问题(issue#I49JU8@Gitee)
    • 【core 】 修复UrlBuilder对Fragment部分编码问题(issue#I49KAL@Gitee)
    • 【core 】 修复Enum转换的bug(issue#I49VZB@Gitee)
    • 【json 】 修复JSONUtil.parse对于MapWrapper识别问题
    • 【core 】 修复IdcardUtil.isValidCard判断问题(issue#I4AJ8S@Gitee)
    Source code(tar.gz)
    Source code(zip)
  • 5.7.12(Sep 9, 2021)

    5.7.12 (2021-09-09)

    🐣新特性

    • 【system 】 OshiUtil增加getCurrentProcess方法
    • 【extra 】 SpringUtil增加getApplicationName、publishEvent方法(issue#I485NZ@Gitee)
    • 【core 】 BeanUtil.getProperty增加判空(issue#I488HA@Gitee)
    • 【core 】 OptionalBean弃用(pr#1182@Github)
    • 【setting】 Setting、Props持有URL改为持有Resource(pr#1182@Github)
    • 【json 】 JSONUtil.toJsonStr增加重载,支持JSONConfig(issue#I48H5L@Gitee)
    • 【crypto 】 SymmetricCrypto增加setMode方法,update采用累加模式(pr#1642@Github)
    • 【core 】 ZipReader支持Filter
    • 【all 】 Sftp、Ftp、HttpDownloader增加download重载,支持避免传输文件损坏(pr#407@Gitee)
    • 【crypto 】 AES修改构造的IvParameterSpec为AlgorithmParameterSpec(issue#1814@Gitee)
    • 【crypto 】 增加FPE、ZUC(issue#1814@Gitee)

    🐞Bug修复

    • 【core 】 修复ListUtil.split方法越界问题(issue#I48Q0P@Gitee)
    • 【core 】 修复QrCode的isTryHarder、isPureBarcode设置无效问题(issue#1815@Github)
    • 【core 】 修复DatePattern.CHINESE_DATE_FORMATTER错误问题(issue#I48ZE3@Gitee)
    • 【core 】 修复ListUtil.split错误问题
    • 【core 】 修复NumberUtil.parseNumber长数字越界问题(issue#1818@Github)
    Source code(tar.gz)
    Source code(zip)
  • 5.7.11(Aug 31, 2021)

    5.7.11 (2021-08-31)

    🐣新特性

    • 【crypto 】 修改SymmetricCrypto初始化逻辑
    • 【core 】 FileTypeUtil增加对wps编辑的docx的识别(issue#I47JGH@Gitee)
    • 【core 】 Money修改构造,0表示读取所有分(issue#1796@Github)
    • 【json 】 增加JSONXMLParser和JSONXMLSerializer
    • 【json 】 XML支持自定义内容标签(issue#I47TV8@Gitee)

    🐞Bug修复

    • 【cron 】 重要修复Scheduler启动默认线程池为null的bug(issue#I47PZW@Gitee)
    Source code(tar.gz)
    Source code(zip)
  • 5.7.10(Aug 26, 2021)

    5.7.10 (2021-08-26)

    🐣新特性

    • 【core 】 增加NamingCase类
    • 【core 】 ListUtil增加page方法重载(pr#1761@Github)
    • 【crypto 】 增加ASN1Util
    • 【core 】 CsvConfig改为泛型形式
    • 【core 】 增加Partition
    • 【http 】 SoapClient.sendForResponse改为public(issue#I466NN@Gitee)
    • 【core 】 XmlUtil增加append重载(issue#I466Q0@Gitee)
    • 【poi 】 增加EscapeStrCellSetter(issue#I466ZZ@Gitee)
    • 【poi 】 ExcelBase增加renameSheet、cloneSheet(issue#I466ZZ@Gitee)
    • 【core 】 ListUtil增加splitAvg方法(pr#397@Gitee)
    • 【poi 】 Excel07SaxReader支持数字类型sheet名称、支持sheetName:名称前缀(issue#I46OMA@Gitee)
    • 【extra 】 Mail增加build方法(issue#I46LGE@Gitee)
    • 【core 】 XmlUtil增加beanToXml重载,支持忽略null
    • 【core 】 添加NullComparator、FuncComparator(issue#I471X7@Gitee)
    • 【core 】 LambdaUtil添加getFieldName(issue#I4750U@Gitee)
    • 【cron 】 Scheduler增加setThreadExecutor(issue#I47A6N@Gitee)
    • 【core 】 CharsetDetector增加detect重载,支持自定义缓存大小(issue#I478E5@Gitee)
    • 【core 】 增加PartitionIter(pr#402@Gitee)
    • 【all 】 增加异常爬栈开关(pr#403@Gitee)
    • 【core 】 优化Combination中C(n,n)的逻辑(pr#1792@Github)
    • 【core 】 Csv读写支持别名(issue#1791@Github)

    🐞Bug修复

    • 【core 】 修复MapUtil.sort比较器不一致返回原map的问题(issue#I46AQJ@Gitee)
    • 【core 】 修复JSONSupport默认循环引用导致的问题(issue#1779@Github)
    • 【poi 】 修复ExcelUtil.readBySax资源没有释放问题(issue#1789@Github)
    Source code(tar.gz)
    Source code(zip)
  • 5.7.9(Aug 17, 2021)

    🐣新特性

    • 【extra 】 FileUtil增加moveContent方法(issue#I45H30@Gitee)
    • 【extra 】 JschPool.getSession获取时检查是否连接状态(issue#I45N5I@Gitee)

    🐞Bug修复

    • 【extra 】 修复TinyPinyinEngine空构造造成可能的误判问题
    • 【http 】 修复在gzip模式下Content-Length服务端设置异常导致的问题(issue#1766@Github)
    • 【db 】 修复PooledDataSource关闭逻辑错误问题
    Source code(tar.gz)
    Source code(zip)
  • 5.7.8(Aug 12, 2021)

    🐣新特性

    • 【core 】 MapProxy支持return this的setter方法(pr#392@Gitee)
    • 【core 】 BeeDSFactory移除sqlite事务修复代码,新版本BeeCP已修复
    • 【core 】 增加compress包,扩充Zip操作灵活性
    • 【json 】 增加JSONBeanParser
    • 【poi 】 增加CellSetter,可以自定义单元格值写出
    • 【poi 】 CsvReader增加readFromStr(pr#1755@Github)
    • 【socket 】 SocketUtil增加connection方法
    • 【extra 】 JschUtil增加bindPort重载方法(issue#I44UTH@Github)
    • 【core 】 DefaultTrustManager改为继承X509ExtendedTrustManager
    • 【core 】 增加IoCopier

    🐞Bug修复

    • 【core 】 改进NumberChineseFormatter算法,补充完整单元测试,解决零问题
    • 【core 】 修复Img变换操作图片格式问题(issue#I44JRB@Gitee)
    Source code(tar.gz)
    Source code(zip)
Owner
dromara
poems & dreams
dromara
Java with functions is a small java tools and utils library.

Java with functions is a small java tools and utils library.

null 4 Oct 14, 2022
Set level of characters in-game

SetLevel Basics This is a simple plugin to easily set character level in game. There will probably be issues if you don't use the commands as intended

Thoronium 15 Dec 16, 2022
Convert Java to JSON. Convert JSON to Java. Pretty print JSON. Java JSON serializer.

json-io Perfect Java serialization to and from JSON format (available on Maven Central). To include in your project: <dependency> <groupId>com.cedar

John DeRegnaucourt 303 Dec 30, 2022
A Java serialization/deserialization library to convert Java Objects into JSON and back

Gson Gson is a Java library that can be used to convert Java Objects into their JSON representation. It can also be used to convert a JSON string to a

Google 21.7k Jan 8, 2023
A universal types-preserving Java serialization library that can convert arbitrary Java Objects into JSON and back

A universal types-preserving Java serialization library that can convert arbitrary Java Objects into JSON and back, with a transparent support of any kind of self-references and with a full Java 9 compatibility.

Andrey Mogilev 9 Dec 30, 2021
A simple java JSON deserializer that can convert a JSON into a java object in an easy way

JSavON A simple java JSON deserializer that can convert a JSON into a java object in an easy way. This library also provide a strong object convertion

null 0 Mar 18, 2022
A modern JSON library for Kotlin and Java.

Moshi Moshi is a modern JSON library for Android and Java. It makes it easy to parse JSON into Java objects: String json = ...; Moshi moshi = new Mos

Square 8.7k Dec 31, 2022
A fast JSON parser/generator for Java.

fastjson Fastjson is a Java library that can be used to convert Java Objects into their JSON representation. It can also be used to convert a JSON str

Alibaba 25.1k Dec 31, 2022
JSON to JSON transformation library written in Java.

Jolt JSON to JSON transformation library written in Java where the "specification" for the transform is itself a JSON document. Useful For Transformin

Bazaarvoice 1.3k Dec 30, 2022
Java JsonPath implementation

Jayway JsonPath A Java DSL for reading JSON documents. Jayway JsonPath is a Java port of Stefan Goessner JsonPath implementation. News 10 Dec 2020 - R

null 7.6k Jan 4, 2023
A streaming JsonPath processor in Java

JsonSurfer - Let's surf on Json! Why JsonSurfer Streaming No need to deserialize entire json into memory. JsonPath Selectively extract json data by th

null 256 Dec 12, 2022
Sawmill is a JSON transformation Java library

Update: June 25, 2020 The 2.0 release of Sawmill introduces a breaking change to the GeoIpProcessor to comply with the updated license of the MaxMind

Logz.io 100 Jan 1, 2023
Genson a fast & modular Java <> Json library

Genson Genson is a complete json <-> java conversion library, providing full databinding, streaming and much more. Gensons main strengths? Easy to use

null 212 Jan 3, 2023
A reference implementation of a JSON package in Java.

JSON in Java [package org.json] Click here if you just want the latest release jar file. Overview JSON is a light-weight language-independent data int

Sean Leary 4.2k Jan 6, 2023
Fast JSON parser for java projects

ig-json-parser Fast JSON parser for java projects. Getting started The easiest way to get started is to look at maven-example. For more comprehensive

Instagram 1.3k Dec 26, 2022
Java JsonPath implementation

Jayway JsonPath A Java DSL for reading JSON documents. Jayway JsonPath is a Java port of Stefan Goessner JsonPath implementation. News 10 Dec 2020 - R

null 7.6k Jan 5, 2023
Generate Java types from JSON or JSON Schema and annotates those types for data-binding with Jackson, Gson, etc

jsonschema2pojo jsonschema2pojo generates Java types from JSON Schema (or example JSON) and can annotate those types for data-binding with Jackson 2.x

Joe Littlejohn 5.9k Jan 5, 2023
A JSON Schema validation implementation in pure Java, which aims for correctness and performance, in that order

Read me first The current version of this project is licensed under both LGPLv3 (or later) and ASL 2.0. The old version (2.0.x) was licensed under LGP

Java Json Tools 1.5k Jan 4, 2023
A Java annotation processor used for automatically generating better builder codes.

BetterBuilder BetterBuilder is a Java annotation processor used for automatically generating better builder codes(builder design pattern), which can m

LEO D PEN 9 Apr 6, 2021