2014-06-18 209 views
0

我再次遇到另一個令我想起來的案例。我試圖運行一個可執行的Java類(.jar)作爲Windows服務,並且我所有的嘗試都失敗了。爲了使它更容易一些,我把我的jar文件放進一個批處理文件,只至極執行背景罐子,這裏是代碼:將.bat作爲Windows服務運行

start "" javaw -jar C:\LocalService.jar 

批處理工作正常。不過我曾嘗試使用下一行CMD安裝此批作爲一種服務:

sc create "LocalService" binPath= "C:\LocalService.bat" 

的服務安裝正確,但只要我嘗試啓動它,它會彈出一個錯誤(代碼錯誤是1053,說有關服務沒有正確啓動)

另外,我用一個名爲NSSM(非吸吮服務管理器)的軟件嘗試它也安裝得很好,但服務也不啓動。

你們知道我錯過了什麼嗎?

順便說一句,我在Windows 7 Professional上做了所有這些。

謝謝!

+0

根據我的錯誤工具。要將一個jar包裝到Windows服務中,請使用[Apache Procrun](http://commons.apache.org/proper/commons-daemon/procrun.html)。 – ForguesR

+0

服務是特殊庫(有時是程序),具有控制啓動和停止的指定功能。在Windows資源工具包中,您會發現將任何程序轉換爲服務的srvany(儘可能)。將Java程序(java.exe?)或cmd.exe轉換爲運行jar或bat文件的服務。你也可以減少複雜性並直接運行java。 – phd443322

回答

0

感謝您的意見 這兩個工具都沒有爲我工作,悲傷。但是我可以用一個名爲Java Service Wrapper的軟件來完成它。這不是一個免費軟件,所以我需要購買許可才能使其運行。 的步驟很簡單:

1.創建與服務的名稱的文件夾,那裏面添加4個文件夾:lib下,倉,日誌的conf

2,在您需要的lib文件夾複製你的jar文件以及wrapper.jar和wrapper.dll(最後兩個文件位於你從網站下載的zip文件中)

3.將4個文件複製到bin文件夾中:InstallApp-NT.bat.in, App.bat.in,UnintstallApp-NT.bat.in和wrapper.exe(最後一個是定義你的許可證的那個,如果你可以從其他支付許可證的人那裏得到一個文件wrapper.exe,它將工作正常。這些文件也來自網站的zip文件)從batc中刪除.in h文件

4.-最棘手的一步是:您必須從名爲conf的包裝文件夾複製一個名爲wrapper.conf.in的文件。刪除.in擴展名並使用tex編輯器進行編輯。你必須編輯最重要的線路有:

wrapper.java.command=C:\Program Files (x86)\Java\jre7\bin\java //Specify JRE Path. Will work with eviroment variable 

wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperJarApp //Choosing this class means your are using a .jar file to execute when the service starts 

wrapper.java.classpath.1=C:\LocalService\lib\wrapper.jar //This one is constant. 
wrapper.java.classpath.2=C:\LocalService\lib\LocalService.jar //This is the path to your executable jar 

wrapper.java.library.path.1=C:\LocalService\lib //Path to your own lib folder (the you created at the begining) 

wrapper.app.parameter.1=C:\LocalService\lib\LocalService.jar // again the path to your jar 

然後,只需執行InstallApp-NT.bat並啓動該服務,你的不過是根據文件進行

它的工作對我來說使用絕對路徑,它也會在相對路徑上正常工作。 這就是我如何解決我的問題,我希望有同樣問題的人會覺得這有幫助

下次見!