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"