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

yeotifhr  于 2022-12-19  发布在  Windows
关注(0)|答案(9)|浏览(225)

我有一个包含Java应用程序的JAR文件。如何在不需要用户交互的情况下使其在Windows中启动?

cuxqih21

cuxqih211#

创建一个.bat文件并将其放入:
第一个月
然后将.bat文件放入windows启动文件夹。
还有一件事使用javajavaw是有区别的。当你调试一个应用程序时,java更好,应用程序打印文本或类似的东西,javaw在你不需要的时候更好。为什么?因为java使用一个控制台运行java程序,控制台显示应用程序打印的所有东西(println、异常堆栈跟踪等),而javaw不在控制台上运行。

guz6ccqo

guz6ccqo2#

它很简单,因为您必须输入快捷方式

    • Windows 7**一个月一个月(管理员)或一个月一个月
    • Windows 10:**正在运行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.war,但即使这样,您也会遇到超时,但在后台将启动java.exe。检查任务管理器
在一些受限的环境中,就像我在公司环境中一样

    • 错误:**

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
如果您手动运行,但将在后台运行,这将给您一个错误。

    • 注意:这将在Windows登录启动时运行(登录前,基于服务"Startup Type")**

Detailed explanation of creating windows service

    • 注册表编辑器**
    • 注意:仅编辑高级用户**
    • 仅为当前用户运行**
HKEY_CURRENT_USER/SOFTWARE/MICROSOFT/WINDOWS/CURRENT_VERSION/RUN
    • 为所有用户运行**
hkey_local_machine/SOFTWARE/MICROSOFT/WINDOWS/CURRENT_VERSION/RUN

使用上面的命令创建一个带有名称和路径的字符串

lstz6jyr

lstz6jyr3#

this question的答案可能适合您的需要。将Java应用程序设置为作为Windows服务运行,您应该可以开始了。

w8biq8rn

w8biq8rn4#

1.打开“运行”(Windows键+R
1.写入regedit
1.转到HKey local machine-〉Software-〉Microsoft-〉Windows-〉Current version-〉run
1.单击它,然后在另一个面板中右键单击任何内容并选择Add-〉String value
1.将其命名为java
1.双击它并按如下方式输入其值:x1米11米1x

vkc1a9a2

vkc1a9a25#

如果你想从Java编程,你可以直接写入Windows注册表启动文件夹。
Here是如何以编程方式写入Windows注册表的链接。
当你已经实现了与注册表一起工作的函数时,你所需要的只是运行这段代码

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);

其中key的值需要是运行应用程序的命令,如java-jar myJar.jar
要将其从自动运行中删除,您只需

WinRegistry.deleteValue(WinRegistry.HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", "myJar autorun key");

更新

Replace WinRegistry.writeStringValue with WinRegistry.setStringValue recent version of java 1.8.x
cygmwpex

cygmwpex6#

要从任何可执行文件创建服务,请从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 Package 器将执行的操作:

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服务是否实际启动。
另请参阅:creating a service with sc.exe; how to pass in context parameters

注意所有涉及的仪器均为Microsoft官方!!!

1yjd4xko

1yjd4xko7#

使用“winsw”-http://kenai.com/projects/winsw-这是为Glassfish v3编写的,但通常可以很好地与Java程序一起工作。
需要安装.NET运行时。

pexxcrt2

pexxcrt28#

如果您还没有准备好自己进行配置,或者您希望在多台计算机上实现相同的功能,那么您可以使用Advanced Installer。您可以打包要安装在Windows上的jar,并设置启动时运行程序的参数

2ekbmq32

2ekbmq329#

以下Thorbjørn Ravn Andersen的回应.该项目winsw被删除,网站不存在了.但我能够找到它在
https://web.archive.org/web/20170410101635/https://kenai.com/projects/winsw/sources/subversion/show/trunk?rev=50
哪里提到了它的新家
https://github.com/winsw/winsw

相关问题