java 日志时间错误

java时区错误解决方法问题参考链接电脑上所有java应用、项目时间都不对。核心业务系统启动后日志时间和当前系统时间差11个小时30分钟,电脑用的是云桌面系统有严格的权限控制,找相关人和同事弄了几次没好;都知道是时区问题,但没注意到系统桌面右下角的提示。最后解决方法很简单,先说解决方法。(出现问题的主机是无法连接公网的,文件也无法外传,图片都是照片;)解决方法在windows…

大家好,又见面了,我是你们的朋友全栈君。

java 时区错误

电脑上所有 java 应用、项目时间都不对。 核心业务系统启动后日志时间和当前系统时间差11个小时30分钟,电脑用的是云桌面系统有严格的权限控制,找相关人和同事弄了几次没好;都知道是时区问题,但没注意到系统桌面右下角的提示。最后解决方法很简单,先说解决方法。

(出现问题的主机是无法连接公网的,文件也无法外传,图片都是照片;)

解决方法

1.第一种: 在 windows 桌面右下角点击时间选择正确的时区即可
在这里插入图片描述
2. 第二种: 直接在启动java应用时添加 -Duser.timezone=Asia/Shanghai
在这里插入图片描述
刚开始用的这个方法,后来每次启动一个 IDEA/JBoss/MyEclipse/Jetty 等都要设置这个变量,好烦。还是得去看看怎么回事

问题

我先用 jvisualvm 看了一下 发现系统属性最后一项是 user.timezone=America/Bahia 而别人的都是 user.timezone=GMT+08:00user.timezone=Asia/Shanghai
然后我写了一段代码看 java 应用的 env 和 properties ,及 时间是从 jdk 哪个类来获得的。
看testTimeZone方法
看testTimeZone方法,断点进去后最后到一个关键方法getSystemTimeZoneID()
(下面的图片是修改正确后的拍照截图,没拍错误的)
在这里插入图片描述
getSystemTimeZoneID()走完后 zoneID 就确定了,而getSystemTimeZoneID() 是个 native 方法,调试运行的话会直接到 String 类 使用 byte[] 和指定的 编码字符集确定值。网上搜了一下 源码 大概明白了 jvm 获取时区的策略,
TimeZone 这个链接就有简要说明。现在可以确定不是 java 或 jdk 的问题而是系统问题。 在搜索的过程中有人说是注册表的问题,去按照相应位置看看,设置也正常
在这里插入图片描述
在这里插入图片描述
然后就在页面点了点链接 “无法识别您当前的时区” ,点了我的桌面右下角一看,也有这问题。点击选择正确的时区后,重启java应用,使用 jvisualvm 查看,系统变量设置为user.timezone=GMT+08:00时间也正常了。
问题最后解决的很简单,只是一开始没去系统时间那点点看。
至于为什么错误的会是 user.timezone=America/Bahia 等找到完整的 native 方法 getSystemTimeZoneID() 搭个环境,再打断点看看。

参考链接

https://www.jb51.net/os/windows/293509.html
http://www.xitongtiandi.net/wenzhang/win7/2015-10-05/3300.html
https://blog.51cto.com/2005713/698032
https://bugs.java.com/bugdatabase/view_bug.do?bug_id=6456628
还有一个链接是 getSystemTimeZoneID() 源码,现在找不见了

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/127352.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • bzoj1717[Usaco2006 Dec]Milk Patterns 产奶的模式*「建议收藏」

    bzoj1717[Usaco2006 Dec]Milk Patterns 产奶的模式*

    2022年2月22日
    47
  • zabbix监控网络设备

    zabbix监控网络设备终工作中遇到,办公网有防火墙和交换机,要监控一下他们的流量。可以通过zabbix来做。从整个操作过程来看,主要有两个难点。监控的原理是,zabbix模板里用自带的OID,去交换机上获得值,因此,我们要开启交换机上的snmp,另外要拿到相关监控项的OID值。再去zabbix上添加监控模板就可以了。开启交换机的snmp功能这里不做介绍,因为不是我开的,所以这部分以后补充。下面先介绍如何获得…

    2022年4月30日
    31
  • Mac OS 下三种修改Hosts文件的方法

    Mac OS 下三种修改Hosts文件的方法

    2022年2月8日
    49
  • PyCharm 2022.01.13 永久激活码(JetBrains全家桶)

    (PyCharm 2022.01.13 永久激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年4月1日
    220
  • 安卓root权限管理_root权限在哪里设置

    安卓root权限管理_root权限在哪里设置Android权限说明Android系统是运行在Linux内核上的,Android与Linux分别有自己的一套严格的安全及权限机制,Android系统权限相关的内容,(一)linux文件系统上的权限-rwxr-x–xsystemsystem41562012-06-3016:12test.apk.代表的是相应的用户/用户组及其他人对此文件的访问权限,与此文件运行起来

    2022年10月29日
    0
  • jvm的垃圾回收算法_jvm垃圾回收策略

    jvm的垃圾回收算法_jvm垃圾回收策略前言相比C语言,JVM虚拟机一个优势体现在对对象的垃圾回收上,JVM有一套完整的垃圾回收算法,可以对程序运行时产生的垃圾对象进行及时的回收,以便释放JVM相应区域的内存空间,确保程序稳定高效的运行,但在真正了解垃圾回收算法之前,有必要对JVM的对象的引用做一个简单的铺垫JVM对象可达性分析算法Java虚拟机中的垃圾回收器采用可达性分析来探索所有存活的对象扫描堆中的对象,看是否能够沿着GCRoot对象为起点的引用链找到该对象,找不到表示可以被回收想象一下,对象在什么情况下会被认为是垃圾对象呢?

    2022年9月11日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号