将.bat作为Windows服务运行

时间:2014-06-18 13:40:59

标签: batch-file service jar

我再次与另一个让我忘记的案例。

所以,这种情况正在发生,我试图将可执行的java类(.jar)作为Windows服务运行,到目前为止我的所有尝试都失败了。为了使它更容易一点,我将我的jar变成了一个批处理文件,它只在后台执行jar,这里是代码:

start "" javaw -jar C:\LocalService.jar

批处理工作正常。但是,我尝试使用cmd中的下一行安装此批处理作为服务:

sc create "LocalService" binPath= "C:\LocalService.bat"

服务安装正确,但是一旦我尝试启动它,就会弹出一个错误(代码错误是1053,说服务没有正确启动)

另外,我尝试使用名为NSSM(非吸吮服务管理器)的软件安装也很好,但服务也没有启动。

你们知道我错过了什么吗?

顺便说一下,我在Windows 7 Professional上做了这一切。

谢谢!

1 个答案:

答案 0 :(得分:0)

感谢您的评论 遗憾的是,这两种工具对我都没有用。但是我能够使用一个名为Java Service Wrapper的软件来完成它。这不是一个免费软件,所以我需要购买许可才能让它运行起来。 步骤很简单:

1.-创建一个包含服务名称的文件夹,然后在里面添加4个文件夹:lib,bin,logs,conf

2.-在lib文件夹中你必须复制你的jar以及wrapper.jar和wrapper.dll(最后两个在你从网站下载的zip中)

3.-将4个文件复制到bin文件夹:InstallApp-NT.bat.in,App.bat.in,UnintstallApp-NT.bat.in和wrapper.exe(最后一个是定义许可证的文件) ,如果您可以从已经支付许可证的其他人那里获得文件wrapper.exe,它将正常工作。这些文件也来自网站的zip文件)从批处理文件中删除.in

4.-最棘手的一步是:你必须从名为conf的包装器文件夹中复制一个名为wrapper.conf.in的文件。删除.in扩展名并使用tex编辑器进行编辑。您必须编辑的最重要的行是:

wrapper.java.command=C:\Program Files (x86)\Java\jre7\bin\java //Specify JRE Path. Will work with eviroment variable

wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperJarApp //Choosing this class means your are using a .jar file to execute when the service starts

wrapper.java.classpath.1=C:\LocalService\lib\wrapper.jar //This one is constant. 
wrapper.java.classpath.2=C:\LocalService\lib\LocalService.jar //This is the path to your executable jar

wrapper.java.library.path.1=C:\LocalService\lib //Path to your own lib folder (the you created at the begining)

wrapper.app.parameter.1=C:\LocalService\lib\LocalService.jar // again the path to your jar

然后只需执行InstallApp-NT.bat并启动服务即可完成

它对我有绝对的路径,但是根据文档,它也可以在相对路径上正常工作。 这就是我解决问题的方法,我希望有同样问题的人能找到这个有用的

下次见!