2017-10-20 82 views
0

罐子運行我想編寫運行在啓動一個定時器的小程序。然後,我想將這個程序導出到jar文件並將它作爲一個庫導入到一個java web項目中。但在我想讓自己確信一件事之前: - 當jar被啓動時,jar文件被部署時,即在導入之後,是否可以啓動Timer?如果是,如何?定時器中用作圖書館

謝謝你給我你的意見和指導。

回答

0

我想編寫運行在啓動一個定時器的小程序。 然後,我想將這個程序導出到jar文件中,並將它作爲庫導入到java web項目中。但在此之前,我想 放心的一件事情自己: - 是否有可能啓動定時器 當瓶子開始,當jar文件部署,即剛好 導入後?如果是,如何?

jar格式不提供任何鉤子來指定這樣的事情,一般來說,jar文件從來沒有自己「啓動」,甚至「導入」。元數據,資源和類可以根據請求或需要通過ClassLoader或其他方式從jar中讀取,但是VM不會發出任何可以檢測到的事件或信號。

如果在你的罐子一些特定的類,它是它的特點 - 也許定時器類本身 - 那麼你可以給這個類的靜態初始化,將啓動定時器的實例。當帶有初始化程序的類是加載時會觸發,但這不一定與第一次打開或讀取jar時的相同。但是,可能的話,你可以選擇一個可以提前充分加載的類。

+0

謝謝約翰!我可以爲此選擇一個主要課程嗎?或者,我怎樣才能充分加載類早? – FiokoSoft

+0

@FiokoSoft,因爲你在控制你放在jar中的類,所以你可以把這樣一個靜態初始化器放在你喜歡的任何類中。然而,確保班級提前加載完全是另一回事。這取決於使用罐子的上下文。除了它是應用程序jar外,jar本身不會影響這個,除非是這樣。然後,其清單中的「Main-class:」條目將是相關的。 –

+0

感謝@John!現在,我將Timer的啓動代碼放在主類的靜態主要方法中,並編譯我的程序。然後,我將jar文件導入到其他java web項目中。當我違反了我的web項目中涉及我的jar程序的一些方法時,什麼也沒有發生,定時器不啓動。 – FiokoSoft