2009-09-10 122 views
22

我想將Java應用程序作爲服務運行。不幸的是,我受限於我不能使用類似Java Service Wrapper(這似乎是一個很好的工具)。將Java應用程序作爲服務運行

有沒有任何方法可以在不依賴外部應用程序的情況下運行可執行JAR作爲服務?我目前已安裝該服務,但無法啓動。這是我陷入困境的地方,除了關於JSW的信息之外,我一直無法在Google上找到任何東西。

+0

指http://stackoverflow.com/questions/68113/how-to-create-a-windows-service-from-java-app – skaffman 2009-09-10 17:01:00

+0

爲什麼你不能使用Java Service Wrapper嗎? – Kevin 2009-09-10 17:23:29

+0

@凱文 - 幾個不同的原因。首先,最重要的是授權(GPL - 我無法開放源代碼,這是適用於此)。 – JasCav 2009-09-10 17:45:58

回答

11

有Java服務包裝的LGPL克隆:http://yajsw.sourceforge.net

BTW,IANAL,但我懷疑JSW人員正在推廣FUD,他們的軟件可以用於在GPL許可下爲商業應用程序提供服務,就像可以用gzip商業應用程序進行再分配一樣。我可能是完全錯誤的關於這個,雖然:)

+1

基於wrapper.tanukisoftware.com/doc/english/licenseCommunity.html上的措辭,很顯然,Community Edition不能與非開放源代碼程序一起使用,因爲它位於GPL之下。 – 2010-10-11 09:43:56

+0

GPL並不排除非開源程序與「GPL」程序一起使用(例如,在Linux操作系統上運行商業應用程序是完全正常的)。它只能排除通過鏈接反對GPL代碼並在非GPL許可下發布衍生作品。在這種情況下,我不清楚是否正在創建派生作品。 – ykaganovich 2010-10-11 22:50:13

+0

呃,你可能是對的。他們根據GPL分發他們的東西,但是根據一些奇怪的許可證,要求分發產品軟件在GPL下分發,而不管它是否是衍生產品。我想知道這是否合法......但我想最好假設它是合法的。 – ykaganovich 2010-10-12 02:30:47

2

我還沒試過(但),但Launch4j看起來可以滿足您的需求。

+1

不會註冊爲服務,但它是打包不作爲服務運行的用戶程序的不錯選擇。 – djangofan 2011-07-18 20:56:42

6

應該以windows服務運行的程序必須提供Windows服務管理器用來與該服務通信的某些功能。

只要沒有JVM直接實現此功能(我知道沒有的),你將需要某種形式的包裝的。

我已經成功地使用srvany一個基於java的窗口服務(基本上,它允許運行任意程序作爲Windows服務和正常工作與Java)

+0

這是唯一回答問題的答案;所有其他人都提到了OP希望避免的另一個外部工具。謝謝! – mrtumnus 2017-02-22 22:32:06

1

多一個選擇winrun4j。許可證是eclipse的CPL。

+0

是的,但與其他服務包裝器一樣,要求您實現公共接口以將您的應用程序集成到服務處理程序中。 – djangofan 2011-07-18 20:59:12

0

最簡單的方法,我發現了RunAsService

一位同事推薦了一個名爲SC工具,但我沒有嘗試。

0

JSmooth可以做到這一點,它是螞蟻腳本。

+0

看來,服務包裝開始打破Windows 7 :( – 2010-10-11 09:44:40

1

您可以使用NSSM這樣的:

nssm install MyService "%JAVA_HOME%\bin\java.exe" -jar "path\to\the\file.jar"