2011-05-10 60 views

回答

12

答案this question可能會滿足您的需求。設置您的Java應用程序作爲Windows服務運行,你應該很好去。

30

創建一個.bat文件,並把這個裏面:

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

然後把.bat文件到Windows啓動文件夾。

One more thing: There's a difference between using java and javaw. While java is better when you are debugging an application, the application prints text or something like that, javaw is better when you don't need that. Why? Because java runs java program using a console that shows all that application prints (println's, exception stacktraces and so on) while javaw doesn't run on console.

+5

這隻 – 2011-05-10 16:58:17

+2

發生在用戶登錄英寸任何其它的方式不是將它保持內部啓動文件夾 – 2013-11-21 15:53:25

+0

@ThorbjørnRavnAndersen當將它,否則happend? – 2015-05-26 14:12:00

-1

使用 「winsw」 - http://kenai.com/projects/winsw - 這是爲Glassfish的第三版書面但Java程序一般工作得很好。

要求安裝.NET運行時。

13

這很簡單,你必須把快捷方式

的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

這會給你一個錯誤,如果你手動運行,但會在後臺運行。

注意:這將在窗口中運行,登錄啓動(登錄之前,基於服務 '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 

使用上述命令

+0

因爲'java.exe'沒有實現'StartServiceCtrlDispatcher','sc create'不會工作。請參閱http://msdn.microsoft.com/en-us/library/windows/desktop/ms687416%28v=vs.85%29.aspx – gavenkoa 2015-01-09 17:02:11

+0

sc創建不適用於我。 – johnstosh 2017-11-08 14:05:34

6

哈哈創建名稱和路徑的字符串運行...容易! from run(u可以按start + r)寫regedit 然後: HKey本地機器 - > software-> microsoft-> windows-> current version - >運行 點擊它並在其他面板上點擊一下就沒事了選擇 添加 - >字符串值 命名在java 雙擊它,把它的值如下: 「javaw進程-Xmx200m -jar C:\路徑\到\ jar文件\ TheJar.jar」 希望我能幫助你^ _^

1

爲了從任何可執行使用srvany.exeWindows Resource Kits 2003創建服務(需要注意的空間=後)::

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 

並再次步驟。

訪問圖形用戶界面services.msc並查詢procexp.exe服務實際開始。

參見:creating a service with sc.exe; how to pass in context parameters

注意所有涉及的儀器是微軟官方

0

如果您尚未準備好自己進行配置,或者您希望多列式計算機上具有相同功能,則可以使用Advanced Installer。您可以打包安裝在Windows上的jar文件並設置參數,以便在啓動時運行程序

6

如果要通過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); 

其中關鍵需求是什麼命令運行應用程序,如Java價值的罐子myJar.jar

什麼

從自動運行您只需

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

UPDATE

01中刪除個
Replace WinRegistry.writeStringValue with WinRegistry.setStringValue recent version of java 1.8.x 
相關問題