升级jdk版本解决:Unable to obtain ZonedDateTime from TemporalAccessor: {},ISO resolved to xxx of type...

项目场景:

调用minio的方法创建桶失败


问题描述

Unable to obtain ZonedDateTime from TemporalAccessor: {},ISO resolved to xxx of type...

   ZonedDateTime date = ZonedDateTime.now();
    requestBuilder.header("x-amz-date", date.format(Time.AMZ_DATE_FORMAT));

原因分析:

刚开时以为是系统时区问题,因为新部署的一台服务器

public class Test {
  public static void main(String[] args) {
    System.out.println(TimeZone.getDefault());
  }
}

输出

sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=31,lastRule=null]
确认时区没有问题。

后面觉得是服务器系统问题,因为本地使用的jdk版本和依赖jar的版本和服务器上的一致的,本地没有任何问题。于是用虚拟机重新搭建了 windows server 2012 的环境,

jdk版本是 jdk1.8.0_11

mino 依赖 8.0.3

测试代码

import io.minio.Time;
import java.time.ZonedDateTime;
import java.util.TimeZone;

public class Test {
  public static void main(String[] args) {
    ZonedDateTime date = ZonedDateTime.now();
    String  before = "20230421T021723Z";
    System.out.println(before);
    TimeZone.getDefault();
    ZonedDateTime after = ZonedDateTime.parse(before, Time.AMZ_DATE_FORMAT);
    System.out.println(after);
  }
}

确实重现了问题。但是系统版本不能更换只能尝试更换jdk 和 minio的版本。最终通过升级jdk的版本解决了问题


解决方案:

jdk从1.8_11升级成 jdk.1.8_281

资源连接地址:https://download.csdn.net/download/ponypengxin/87712712

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值