在Windows启动时运行Java应用程序
我有一个包含Java应用程序的JAR文件。 我怎样才能使它开始与Windows,而不需要用户的交互?
创build一个.bat文件,并把它放在里面:
javaw -Xmx200m -jar C:\Path\to\jarfile\TheJar.jar
然后将.bat文件放入Windows启动文件夹中。
还有一件事:使用java和javaw是有区别的。 虽然在debugging应用程序时java更好,但应用程序打印文本或类似的东西, javaw在你不需要的时候会更好。 为什么? 因为java使用显示所有应用程序打印的控制台(println,exception堆栈跟踪等)来运行java程序,而javaw不能在控制台上运行。
这个问题的答案可能适合你的需要。 设置您的Java应用程序作为一个Windows服务运行,你应该很好去。
这很简单,因为你必须把快捷方式
Windows 7 C:\users\All Users\Start Menu\Programs\Startup
(pipe理员)或User home directory(%userProfile%)
Windows 10:在运行shell:startup
在它的属性 – >快捷方式 – >目标 – > java.exe -jar D:\..\runJar.jar
注意:这将只在您login后运行
与pipe理权限
sc create serviceName binpath= "java.exe -jar D:\..\runJar.jar"
将创buildwindows服务
如果你超时使用cmd /c D:\JAVA7~1\jdk1.7.0_51\bin\java.exe -jar d:\jenkins\jenkins.war
但是即使如此,你也会得到超时但是在后台java.exe将开始。 检查任务pipe理器
在一些有限的环境中,就像我在企业环境中一样
错误:
The service did not respond to the start or control request in a timely fashion
在这种情况下
cmd /c D:\JAVA7~1\jdk1.7.0_51\bin\java.exe -jar d:\jenkins\jenkins.war
这会给你一个错误,如果你手动运行,但将在后台运行。
注意:这将在Windowslogin启动时运行(在login之前,基于服务“ Startup Type
”)
创buildWindows服务的详细说明
registry编辑器
注意:仅编辑高级用户
只为当前用户运行
HKEY_CURRENT_USER/SOFTWARE/MICROSOFT/WINDOWS/CURRENT_VERSION/RUN
为所有用户运行
hkey_local_machine/SOFTWARE/MICROSOFT/WINDOWS/CURRENT_VERSION/RUN
使用上面的命令创build一个名称和path的string
如果你想从Java编程,你可以直接写入Windowsregistry启动文件夹。
这里是链接如何以编程方式写入Windowsregistry。
当你已经实现了使用registry的function,而不是你所需要的只是运行这个代码
String value = "\"javaw -jar " + System.getProperty("user.dir") + "\\myJar.jar\""; WinRegistry.writeStringValue(WinRegistry.HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", "myJar autorun key", value);
其中键的值需要命令什么运行您的应用程序,如java -jar myJar.jar
从简单的autorun中删除它
WinRegistry.deleteValue(WinRegistry.HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", "myJar autorun key");
哈哈…容易! 从运行(你可以按开始+ R)写registry编辑器然后:HKEY本地机器 – >软件 – >微软 – > Windows – >当前版本 – >运行点击它,并在其他面板上写没有点击并select添加 – >string值名称它的Java双击它,并把它的值如下:'javaw -Xmx200m -jar C:\path\ \ \ jarfile \ TheJar.jar'希望我能帮你^ _ ^
为了从任何可执行文件中创build服务,请使用Windows Resource Kits 2003中的 srvany.exe
(请注意=
后面的空格)::
cmd> sc create NAME binPath= "c:\Program Files\Windows Resource Kits\Tools\srvany.exe" ^ type= own start= auto error= normal DisplayName= "NAME for services.msc"
然后通过srvany.exe
包装将做什么:
cmd> reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\NAME\Parameters" ^ /v "Application" ^ /d "\"c:\Program Files\Java\jre7\bin\java.exe\" -cp c:\home\devel\service Main"
上面你看到空格的引用语法。 接下来开始服务:
cmd> sc start NAME
如果发生错误,请使用以下方法重新检查设置:
cmd> reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\NAME" /s
并删除服务:
cmd> sc delete NAME
并再次采取措施。
访问GUI services.msc
并检查与procexp.exe
服务实际上启动。
另请参阅: 使用sc.exe创build服务 如何传递上下文参数
注意所有涉及的仪器是官方微软 !
如果您没有准备好自己完成configuration,或者您希望在多计算机上使用相同的function,则可以使用高级安装程序 。 您可以打包安装在Windows上的jar文件,并设置启动时运行程序的params
使用“winsw” – http://kenai.com/projects/winsw – 这是为Glassfish v3编写的,但通常与Java程序一起使用。
需要安装.NET运行时。