我正在运行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条目的问题?
谢谢大家,
干杯
答案 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