https://blog.51cto.com/lrtao2010/2153450
一、 下载Javaservice ,把压缩文件解压,放到本地磁盘。
下载地址:
JavaService 64位 http://download.forge.ow2.org/javaservice/JavaService_2_0_10-amd64.zip
JavaService 32位 http://download.forge.ow2.org/javaservice/JavaService-2.0.10.zip
二、 准备jar包,查看jar 包Main函数所在的class
三、 将jar包、解压后的Javaservice执行程序、jdk免安装包放在同一个文件夹下,并在该文件下新建err.log 和 out.log 文件。
四、 注册完成后可能会遇到“The LoadLibrary function failed for the following reason 找不到指定的模块的解决”的问题,为避免该问题,在此先进行处理。
方法1:拷贝%JAVA_HOME%/bin/msvcr100.dll 文件到C:\Windows\System32,
如果是64位系统还要拷贝到C:\Windows\SysWOW64。
方法2:拷贝%JAVA_HOME%/bin/msvcr100.dll 文件到到java程序打包成的jar文件同一个目录下
采用第二种方法,将java-1.8.0_172\jre\bin\msvcr100.dll拷贝到java 程序jar包所在的目录下,这个目录结构如下:
此时start.bat 为空文件
app 目录下存放的文件
五、 编写bat脚本(start.bat)
@echo off
rem Get the current path
set C_PATH=%CD%
rem Get the installation path
set /p "I_PATH=Please enter the installation path:"
rem Check whether the installation path exists.
rem If the path already exists ,exit.
rem if no exists,creation installation path.
if exist %I_PATH% goto I_PATH_EXIT
if not exist %I_PATH% goto I_PATH_ONT_EXIT
:I_PATH_EXIT
echo %I_PATH% Already exist, please replace
set /p "I_PATH=Please enter the installation path:"
if exist %I_PATH% goto I_PATH_EXIT
if not exist %I_PATH% goto I_PATH_ONT_EXIT
:I_PATH_ONT_EXIT
mkdir %I_PATH%\app
rem echo Copy the file to the installation directory
rem xcopy directory ,copy file
xcopy %C_PATH%\app %I_PATH%\app /s
@ timeout 3
rem Register as a service
%I_PATH%\app\JavaService.exe -install Hello-test "%I_PATH%\app\java-1.8.0_172\jre\bin\server\jvm.dll" -Xms256m -Xmx1024m -jar -Djava.class.path="%I_PATH%\app\java-1.8.0_172\lib\tools.jar;%I_PATH%\app\helloworld.jar" -start "org.springframework.boot.loader.JarLauncher" -out "%I_PATH%\app\out.log" -err "%I_PATH%\app\err.log" -current "%C_PATH%" -auto
@ timeout 5
net start Hello-test
rem Generate configuration file
echo 系统安装路径:%I_PATH%\app > %C_PATH%\confing.txt
echo 系统启动命令:net start Hello-test >> %C_PATH%\confing.txt
echo 系统关闭命令:net stop Hello-test >> %C_PATH%\confing.txt
echo 可以通过服务启动或关闭系统(已经配置开机自启动 )>> %C_PATH%\confing.txt
echo 系统服务卸载命令:sc delete Hello-test >> %C_PATH%\confing.txt
pause
注:-start "org.springframework.boot.loader.JarLauncher" –start 后面的class 为第二步中查到的class名称
六、 在Windows 10操作系统上进行测试(双击start.bat文件)
看到上面的页面,说明服务注册成功,并已经启动,按任意键退出即可。
七、 查看管理说明文档
confing.txt 在成功启动服务后自动生成
八、 查看安装路径文件
其中out.log 文件中记录服务启动日志
九、 参考文档
https://blog.csdn.net/cxj1990year/article/details/41862831
如下:
最近项目自己用java写了一个socket服务器,最开始运行的方法,总是会弹出一个命令窗口,这样也不是办法,后来上网找资料看能不能把java程序注册成windows服务?经过了一番搜索,终于找到了一个便捷的方法:使用JavaService.exe将java程序注册成windows服务。下面是JavaService工具的下载地址,下载最新的2.0.10版本。下面跟大家分享一下整个过程以及后续遇到的问题。
JavaService.exe下载地址:http://forge.ow2.org/projects/javaservice/
第一步:打包Java程序
我们先将我们的java程序打包成jar:
需要将使用到的第三方jar包也一同打包进去:
第二步:批处理文件
为了方便起见,将JavaService.exe和我们打包好的JAR放到同一个文件夹中:
conf和log文件夹是我自己存放一些配置文件和日志文件的,这里不用管,reg.bat是我们的注册服务的批处理文件,到时候双击就可以注册服务了。看看reg.bat文件里面的内容:
如果路径中包含空格所以需要将路径用双引号引起来,如果路径中不包含空格加了双引号也不会错,所以还是加起来保险点。
编辑完成后双击即可注册服务:
注册成功后可到服务管理界面查看服务,也可以设置开机启动。
因为我的log日志已经在程序中设置完成,所以在批处理文件中没有指定log,还有批处理文件中还可以添加一些其他的参数,有需要的朋友可以去网上搜索。
删除服务:sc delete DYIMService(服务名)
三:遇到的问题
我在windows server 2008 64位系统的电脑上注册服务的时候,注册完成,启动服务总是弹出服务启动后又停止的对话框。管理工具—事件查看器—应用程序查看错误:
网上搜索第一种方法:将msvcr71.dll复制到System32和SysWOW64文件夹下面,还不能解决问题。
第二种方法:JAVA_HOME/bin下面的msvcr100.dll文件复制到与java程序打包成的jar文件同一个目录下,即上述与DYIMService.jar放在同一目录:
http://stackoverflow.com/questions/14559559/javaservice-exe-on-windows-server-2012
问题解决了,真是长长舒了一口气。