从cj作业的.jar文件触发特定类?

时间:2016-07-27 10:45:20

标签: java bash amazon-web-services jar cron

我正在运行AWS EC2 Linux实例,我上传了我编写的一个软件的.jar文件。 为了定期触发应用程序,我想以下列方式使用cron - 和setup crontab:

23 12 * * * java -jar  /home/ec2-user/Cube-Core/Cube.jar > /home/ec2-user/CubeCore/CronLogfiles/test.log 2>&1

路径全部匹配,我将sysout和syserr从软件重定向到testlog文件。

但是:当cron完成这项工作时,他会在jar中触发什么?他正在寻找一个名为“主要' (这只是我的假设,因为我是cron的新手)。如果是这种情况,我怎么能明确地告诉他要触发哪个类,因为我的项目的主要类被不同地调用了?

另外,我只读到有些人喜欢用cron触发bash脚本,并让脚本本身触发.jar执行。另一方面,我告诉crontab直接执行.jar。这两种方式中哪一种最干净?'为什么,或者它最终只是一个不过度覆盖crontab条目的问题?

谢谢大家,

干杯

2 个答案:

答案 0 :(得分:0)

Java tutorials表示您需要在清单中定义入口点:

Main-Class: classname

根据您用于创建jar的内容,可能会有一些配置方便。

对你有好处:你不需要对cron工作做任何特别的事情。 对你来说不太好:它是在创造罐子时完成的,所以如果它不在那里,那就太麻烦了。

但是,我想如果jar工作正常,就不应该做任何额外的事情。

答案 1 :(得分:0)

<强> 1。使用单个主类

java -jar myjar.jar` 

它将从jar中的元文件中获取主类详细信息,

Main-class : com.yourpackage.Mainclass

<强> 2。 Jar有多个主类 如果您的单个jar中有多个主类,那么您可以使用以下格式,

java -cp myjar.jar MyClass