【问题标题】:Triggering specific class from .jar file for cron job?从 .jar 文件中为 cron 作业触发特定类?
【发布时间】:2016-12-01 08:01:54
【问题描述】:

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

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

路径都匹配,我将软件中的 sysout 和 syserr 重定向到一个测试日志文件。

但是:当 cron 完成这项工作时,他会在 jar 本身中触发什么?他是否正在寻找一个名为“main”的课程(这只是我的假设,因为我是 cron 新手)。如果是这种情况,我如何明确告诉他要触发哪个类,因为我的项目的主类的调用方式不同?

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

谢谢大家,

干杯

【问题讨论】:

  • 你能从命令行使用 jar 文件执行你的程序吗?
  • cron 只需调用java。是java 加载并执行jar 文件。

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


【解决方案1】:

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

Main-Class: classname

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

对您有好处:您不必对 cron 作业做任何特别的事情。 对你来说不太好:它是在创建 jar 时完成的,所以如果它不存在,那就很麻烦了。

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

【讨论】:

  • 就是这样。谢谢!我使用 Gradle 来构建 jar,忘记指定 mainClassName 并且还缺少一个插件。谢谢!
【解决方案2】:

1.带有单个 Main 类的 Jar

java -jar myjar.jar` 

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

Main-class : com.yourpackage.Mainclass

2。具有多个主要类的罐子 如果您的单个 jar 中有多个主类,则可以使用以下格式,

java -cp myjar.jar MyClass 

【讨论】:

    猜你喜欢
    • 2020-04-27
    • 2022-12-09
    • 2014-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-26
    • 2010-11-04
    • 1970-01-01
    相关资源
    最近更新 更多