java jar 服务自启动存在的坑及解决办法

为了在服务器重启的时候,java程序能够自动重启,我们通常把它加到服务里面

ln -s /full/path/to/jar /etc/init.d/service_name
# start service
service service_name start
# check status
service service_name status
# stop 
service service_name stop
#restart
service service_name restart

  但这样可能会产生一个bug。jvm在启动的时候会读取系统的default encoding。如果重启后,服务启动的时候,系统配置还没有好,那么jvm读到的default encoding就可能不是我们通常用的utf-8,比如是latin1.这样涉及编码的时候就不支持中文了。会抛异常:

Malformed input or input contains unmappable characters

解决方法:

在jar的同级目录下 配置同名.conf文件,文件内指定使用utf-8编码

LOG_FOLDER=/dev
LOG_FILENAME=null


JAVA_OPTS="-Xmx1024m -Dspring.profiles.active=production -Dfile.encoding=UTF-8 -Djava.security.egd=file:/dev/./urandom"
原文地址:https://www.cnblogs.com/yuetz/p/6646529.html