我有一个包含Java应用程序的JAR文件。如何在不需要用户交互的情况下从Windows开始?
答案 0 :(得分:36)
创建一个.bat文件并将其放入:
javaw -Xmx200m -jar C:\Path\to\jarfile\TheJar.jar
然后将.bat文件放入Windows启动文件夹。
还有一件事:使用 java 和 javaw 之间存在差异。虽然 java 在调试应用程序时更好,但应用程序会打印文本或类似内容, javaw 在您不需要时更好。为什么?因为 java 使用控制台运行java程序,该控制台显示所有应用程序打印(println,异常堆栈跟踪等),而 javaw 不在控制台上运行。
答案 1 :(得分:17)
这很简单,因为你必须把快捷方式放在
中 Windows 7
C:\users\All Users\Start Menu\Programs\Startup
(管理员)或User home directory(%userProfile%)
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
使用上面的命令
创建一个带名称和路径的字符串答案 2 :(得分:13)
this question的答案可能符合您的需求。设置你的java应用程序作为Windows服务运行,你应该很高兴。
答案 3 :(得分:7)
哈哈...容易! 从run(你可以按start + r)写regedit 然后: HKey本地机器 - &gt;软件 - &gt; microsoft-&gt; windows-&gt;当前版本 - &gt;跑 单击它,在另一个面板中右键单击任何内容并选择 添加 - &gt;字符串值 将它命名为java 双击它并将其值设为如下: 'javaw -Xmx200m -jar C:\ Path \ to \ jarfile \ TheJar.jar' 希望我能帮到你^ _ ^
答案 4 :(得分:6)
如果您想从Java以编程方式执行此操作,则可以直接写入Windows注册表启动文件夹。
Here是如何以编程方式写入Windows注册表的链接。
当你实现了使用注册表的函数而不是你需要的只是运行这段代码
Array
(
[0] => stdClass Object
(
[id] => 1
[user_id] => 0
[archived] => 0
[supplier_id] => 5
[customer_id] => 1
[contact] => dfgfdg
[commission] => dfgdfg
[entrance_date] => 2015-09-22 16:52:33
[cost_estimate] => 1
[status] => 1
[type] => 1
[watch_id] => 7
[reference] => dfgdfg
[serial_number] => 0
[delivery_date] => 2015-09-07 16:52:33
[articles_json] =>
[total_sales_cost_netto] =>
[gross_profit_netto] =>
[gross_profit_brutto] =>
[created_at] => 2015-09-09 20:10:02
[updated_at] => 2015-09-11 16:52:33
)
)
其中key的值需要命令运行你的应用程序,如java -jar myJar.jar
将其从自动运行中删除,只需
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);
<强>更新强>
WinRegistry.deleteValue(WinRegistry.HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", "myJar autorun key");
答案 5 :(得分:2)
要从任何可执行文件创建服务,请使用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
服务是否实际启动。
另请参阅:creating a service with sc.exe; how to pass in context parameters
注意所有涉及的工具都是官方微软 !!!
答案 6 :(得分:0)
如果您尚未准备好自己进行配置,或者您希望在多台计算机上使用相同的功能,则可以使用Advanced Installer。您可以打包安装在Windows上的jar并设置将在启动时运行程序的params
答案 7 :(得分:-1)
使用“winsw” - http://kenai.com/projects/winsw - 这是为Glassfish v3编写的,但一般适用于Java程序。
要求安装.NET运行时。