【问题标题】:Solution to run a jar file at specific time each day每天特定时间运行jar文件的解决方案
【发布时间】:2014-03-07 07:07:02
【问题描述】:

我想分发一个需要定期运行的 jar 脚本。我不知道最终用户会使用哪个操作系统。

是否有一个跨操作系统解决方案可用于在每天的特定时间运行 jar 文件。

即在windows中添加定时任务和cron任务等

任何帮助表示赞赏!

【问题讨论】:

    标签: java jar scheduled-tasks


    【解决方案1】:

    您可以使用用 Java 编写的任务调度框架来保证跨操作系统的可移植性 - 因为每个操作系统都有自己的调度命令,所以您不会在不同平台上找到相同的工具。

    例如,看看Quartz。但请注意,您必须学习如何使用它来配置、设置和编程任务,恕我直言,这并不是那么简单的。但话又说回来,这就是您必须为便携性付出的代价。

    另一种选择是使用Timer 服务安排任务(请查看tutorial),但为此您需要符合Java EE 的服务器。无论哪种方式,请注意“运行 jar”实际上意味着执行 jar 文件中的 main 方法,这只是对 Java 程序的调用。

    【讨论】:

    • 谢谢!我会调查的。它会在 Windows 中创建计划任务吗?还是需要不断运行并在特定时间运行 jar?
    • 它将任务存储在数据库(或其他数据存储)中,您可以对其进行编程以在 Java 支持的任何平台上以极大的灵活性运行您想要的任何东西。
    • 好的 gr8 !但它是否需要在后台不断运行?我想是的。
    • @ZendNoob 是的,只要有一个正在运行的进程分派任务,无论是 Quartz 本身还是应用程序服务器,这两种替代方案(Quartz、Timer)都可以工作。请注意,您还必须配置用于存储任务的外部数据源,例如数据库。正如我之前所说:事情没那么简单。
    【解决方案2】:

    如果您正在寻找独立于操作系统的调度程序,那么这样的事情是不存在的。 Quartz 是一个 Java 环境的任务调度器。例如 - 您可以使用quartz 在您的java 程序中安排任务。您必须编写一个 java 程序并一直运行它才能使用石英来满足您的要求。换句话说,您必须在操作系统启动时启动您的 java 程序,以便它准备好运行您计划的作业。手头的任务太复杂了!您应该考虑根据需要使用特定于操作系统的调度程序。

    【讨论】:

    • 好吧,这是有道理的!但是是否有适用于所有 3 个主要操作系统的操作系统相关解决方案?即 Windows、Mac、Linux。
    • @ZendNoob 不幸的是,不存在独立于操作系统的解决方案。从广义上讲,您需要使用 2 种不同的路径 - 一种用于 windows,另一种用于 u*x(linux、mac 或任何其他 unix 风格)。从您的代码调用 cron 来安排所有 unix 风格的作业。在 Windows 中,我相信您可以通过插入注册表项来安排作业。在您的代码中保存注册表项 sn-p 并使用 regedit 将其导入注册表。希望这些线索有所帮助。
    猜你喜欢
    • 2016-11-08
    • 1970-01-01
    • 1970-01-01
    • 2020-08-28
    • 2021-01-04
    • 2013-04-18
    • 1970-01-01
    • 2016-06-05
    • 2020-12-16
    相关资源
    最近更新 更多