在Windows启动时运行Java应用程序

我有一个包含Java应用程序的JAR文件。 我怎样才能使它开始与Windows,而不需要用户的交互?

创build一个.bat文件,并把它放在里面:

javaw -Xmx200m -jar C:\Path\to\jarfile\TheJar.jar

然后将.bat文件放入Windows启动文件夹中。

还有一件事:使用javajavaw是有区别的。 虽然在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运行时。