Java程序怎么注册成windows服务?(JavaService) - 方法2

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
通过JavaService 将java jar包注册成Windows 服务
三、 将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包所在的目录下,这个目录结构如下:
通过JavaService 将java jar包注册成Windows 服务
此时start.bat 为空文件
app 目录下存放的文件
通过JavaService 将java jar包注册成Windows 服务
五、 编写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文件)
通过JavaService 将java jar包注册成Windows 服务
通过JavaService 将java jar包注册成Windows 服务

看到上面的页面,说明服务注册成功,并已经启动,按任意键退出即可。

七、 查看管理说明文档
通过JavaService 将java jar包注册成Windows 服务
confing.txt 在成功启动服务后自动生成
通过JavaService 将java jar包注册成Windows 服务
八、 查看安装路径文件
通过JavaService 将java jar包注册成Windows 服务
其中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

问题解决了,真是长长舒了一口气。

 

相关推荐

网友评论(0)