使用Java Service Wrapper注册为windows系统服务时参考了这篇文章,使用Wrapper创建java的window系统服务。
我用的版本是wrapper-windows-x86-64-3.5.36-st,与参考文章中使用的不同,可能是版本的问题,实现过程中遇到了一些问题,做个记录。
-
语言包问题
STATUS | wrapper | 2018/10/10 13:56:09 | Launching a JVM...
INFO | jvm 1 | 2018/10/10 13:56:10 | WrapperManager: Initializing...
INFO | jvm 1 | 2018/10/10 13:56:10 | JVM failed to load language pack 'wrapperjni_zh.mo' from folder "../lang"
wrapper没有中文语言包,所以用默认语言包的时候会遇到这个问题,虽然不影响使用,但是看着很膈应,修改.conf文件中的“wrapper.lang”,取消注释即可,修改如下:
# The following property will output information about which License Key(s)
# are being found, and can aid in resolving any licensing problems.
wrapper.lang=en_US
-
springboot执行程序主类
.conf文件有个参数是“wrapper.app.parameter.1”,配置应用程序参数,一开始以为要配置成springboot的启动类,但是会报“java.lang.NoClassDefFoundError”错误,后来改成springboot的jar包启动类“org.springframework.boot.loader.JarLauncher”即可,修改如下:
# Application parameters. Add parameters as needed starting from 1
wrapper.app.parameter.1=org.springframework.boot.loader.JarLauncher
-
springboot外部配置
如果要用springboot外部配置,将“wrapper.java.additional.1”配置修改成使用java -jar启动时所加的外部配置命令即可,修改如下:
# Java Additional Parameters
wrapper.java.additional.1=-Dspring.config.location=../lib/config/application.yml
-
jdk版本错误
INFO | jvm 1 | 2018/10/10 14:48:01 | WrapperManager: Initializing...
INFO | jvm 1 | 2018/10/10 14:48:01 | WrapperSimpleApp Error: Class org.springframework.boot.loader.JarLauncher found but could not be initialized: java.lang.UnsupportedClassVersionError: org/springframework/boot/loader/JarLauncher : Unsupported major.minor version 52.0
STATUS | wrapper | 2018/10/10 14:48:03 | <-- Wrapper Stopped
使用“wrapper -c”测试命令能正常启动jar包,但是使用“wrapper -i”命令注册服务后,再使用“wrapper -t”命令启动会报如上错误,修改“wrapper.java.command”配置即可,修改如下(当然,JAVA_HOME需要已经在环境变量中配置):
#********************************************************************
# Wrapper Java Properties
#********************************************************************
# Java Application
# Locate the java binary on the system PATH:
#wrapper.java.command=java
# Specify a specific java binary:
#set.JAVA_HOME=/java/path
wrapper.java.command=%JAVA_HOME%/bin/java