最近一段时间启动之前一直常用的老版本开发软件Ireport,这个程序停更很久了,只不过公司老系统有一些还在使用,接手了就一直安装了拿来开发。
这个软件只能使用1.7以下的java版本才能进行开发,而且启动是执行了jar文件的,某一天突然没有办法打开,由于闪退且没有任何报错信息也没有本地日志文件,所以一直查不到原因,百度和科学上网均无法解决,所以不了了之。
知道某天反编译代码使用jd-gui,突然发现也打不开了,本身这东西只是个jar文件,按理说不应该随意出现突然打不开的情况的,尝试了多个jar后缀文件执行,发现无任何报错但就是打不开。开始怀疑java出现问题,然后cmd执行java、javac执行也没用报错,但出现乱码情况,一开始没有太在意,后面通过java执行所有java文件均乱码。
然后排查最近几天做的系统级别操作,最终想起来为了打某个游戏,曾经将系统区域时间修改为beta版,尝试改回,重启,错误修正完成。
错误修正位置:控制面板-区域-更改日期、时间或数字格式-管理-更改系统区域设置-beta取消勾选
目前问题虽然已经解决,但造成修改区域时间导致无法启动的原因还只是猜测,大概率是因为jar内部有一些获取时间相关的代码,而beta版后提示由unicode utf-8提供全球版支持,可能强制取utf-8格式字符的时间段,导致windows中文环境没有专门设置字符集的情况下,控制台默认取gbk执行java文件造成时间获取异常,还没进入java文件执行阶段就停掉了。