2017-10-20 123 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