我刚刚继承了一个java应用程序,需要在XP和vista上作为服务安装。我已经8年没有使用任何形式的windows了,我从来没有创建过服务,更不用说从java应用程序(我已经为应用程序准备了一个jar和一个依赖jar - log4j)。使其作为服务运行所必需的魔力是什么?我已经得到了源代码,所以代码修改(尽管最好避免)是可能的。
当前回答
我不喜欢Java服务包装器的授权。我使用ActiveState Perl编写了一个完成这项工作的服务。
我想过用c#写一个服务,但是我的时间太紧了。
其他回答
我总是只使用sc.exe(参见http://support.microsoft.com/kb/251192)。它应该安装在从SP1开始的XP上,如果它不符合你的Vista风格,你可以通过Vista资源包下载加载它。
我没有使用Java做过太复杂的事情,但是使用完全限定的命令行参数(x:\ Java .exe ....)或使用Ant创建一个脚本来包含依赖项和设置参数对我来说都很好。
使用Apache Commons Daemon,您现在可以拥有自定义的可执行名称和图标!您还可以获得一个自定义的Windows托盘显示器与您自己的名称和图标!
我现在有我的服务运行与我自己的名称和图标(prunsrv.exe),和系统托盘监视器(prunmgr.exe)也有我自己的自定义名称和图标!
Download the Apache Commons Daemon binaries (you will need prunsrv.exe and prunmgr.exe). Rename them to be MyServiceName.exe and MyServiceNamew.exe respectively. Download WinRun4J and use the RCEDIT.exe program that comes with it to modify the Apache executable to embed your own custom icon like this: > RCEDIT.exe /I MyServiceName.exe customIcon.ico > RCEDIT.exe /I MyServiceNamew.exe customTrayIcon.ico Now install your Windows service like this (see documentation for more details and options): > MyServiceName.exe //IS//MyServiceName \ --Install="C:\path-to\MyServiceName.exe" \ --Jvm=auto --Startup=auto --StartMode=jvm \ --Classpath="C:\path-to\MyJarWithClassWithMainMethod.jar" \ --StartClass=com.mydomain.MyClassWithMainMethod Now you have a Windows service of your Jar that will run with your own icon and name! You can also launch the monitor file and it will run in the system tray with your own icon and name. > MyServiceNamew.exe //MS//MyServiceName
这很简单,因为你必须加入快捷方式
Windows 7 C:\users\所有用户\开始菜单\程序\启动(Admin)或用户主目录(%userProfile%)
Windows 10: 在“Run shell:startup”中
在它的属性->快捷方式->目标-> java.exe -jar D:\..\runJar.jar
注意:只有在您登录后才会运行
拥有管理员权限
sc create serviceName binpath= "java.exe -jar D:\..\runJar.jar"将创建windows服务
如果超时,使用cmd /c D:\JAVA7~1\jdk1.7.0_51\bin\java.exe -jar D:\ jenkins\jenkins。战争,但即使这样,你会得到超时,但在后台java.exe将启动。检入任务管理器
注意:这将在windows登录启动时运行(在登录之前,基于服务“启动类型”)
创建windows服务的详细说明
另一个不错的选择是FireDaemon。它被一些大公司使用,比如NASA、IBM等;他们的网站上有完整的列表。
在过去几年里,我一直在使用jar2exe在Windows上运行我们的Java应用程序作为服务。它提供了一个选项来创建一个exe文件,可以作为Windows服务安装。
推荐文章
- 在流中使用Java 8 foreach循环移动到下一项
- 访问限制:'Application'类型不是API(必需库rt.jar的限制)
- 用Java计算两个日期之间的天数
- 如何配置slf4j-simple
- 在Jar文件中运行类
- 带参数的可运行?
- 我如何得到一个字符串的前n个字符而不检查大小或出界?
- 我可以在Java中设置enum起始值吗?
- Java中的回调函数
- c#和Java中的泛型有什么不同?和模板在c++ ?
- 在Java中,流相对于循环的优势是什么?
- Jersey在未找到InjectionManagerFactory时停止工作
- 在Java流是peek真的只是调试?
- Recyclerview不调用onCreateViewHolder
- 将JSON字符串转换为HashMap