我想寫一個服務的問題。我正在嘗試創建一個在Windows系統的後臺運行但使用java的服務。我已經看到了幾種這樣做的方法,但決定採用一種似乎符合我要求的方法。該服務將檢查數據庫中需要處理的項目。當它在數據庫中找到它需要執行的項目時,它將運行一些系統命令來照顧它們。如何在我的jar中包含外部類
我找到了一種方法來使用tomcat7.exe文件來運行一個jar作爲一項服務,這對基本的東西工作得很好。只要我寫入並編譯到我的jar文件「myService.jar」中,我們就可以調用它。問題是我們已經有了幾個類,用於訪問數據庫並運行預編譯在名爲BGLib-1.0.jar的類庫中的命令。
我已經用這個庫編寫了幾個jenkins插件,並沒有問題從它調用函數。當我創建一個hpi文件並將它部署在Jenkins中時,它們都可以正常工作。在那裏,編譯器(使用Maven的Eclipse)將BGLib jar與插件jar打包在一起,Jenkins計算出如何讓他們看到彼此。
但是,當我構建我的服務jar時,在部署它時它不起作用。
我運行如下命令來安裝Tomcat的exe文件重命名爲myservice.exe:
d:\myService\bin>myService.exe //IS//myService --Install=D:\myService\bin\myService.exe --Description="run some commands
Java Service" --Jvm=auto --Classpath=D:\myService\jar\myService.jar;D:\myService\jar\BGLib-1.0.jar --StartMode=jvm --
StartClass=com.myCompany.myService.myService --StartMethod=windowsService --StartParams=start --StopMode=jvm --StopClass
=com.myCompany.myService.myService --StopMethod=windowsService --StopParams=stop --LogPath=D:\myService\logs --StdOutpu
t=auto --StdError=auto
當我單獨在myService.jar如預期的服務行爲代碼部署這一點,但是當我嘗試在BGLib-1.0.jar中調用函數,我什麼也得不到。 jvm似乎崩潰或無響應。調試有點棘手,但它看起來像我沒有發現類錯誤。
我試着在POM文件中添加下面的條目來查看在清單中更改類路徑條目是否有幫助,但是它沒有更改清單。對於清單文件的工作方式,我仍然無能爲力。任何文檔都很酷。我去過Maven的網站,它似乎沒有關於可用標籤的全面文檔。我需要在清單中更改一些東西來讓我的jar看到外部類嗎?還是有什麼我可以添加,將讓Maven從我的jar中的jar中編譯類?
在此先感謝。
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>com.myCompany.myService.myService</mainClass>
<customClasspathLayout>BGLib-1.0.jar</customClasspathLayout>
</manifest>
</archive>
</configuration>
你看過[maven-assembly-plugin](http://maven.apache。組織/插件/ Maven的組裝插件/)?它將允許你創建一個包含你的代碼,它的依賴關係,運行它的腳本等的發行版。 – sbk 2013-02-14 15:56:28