【问题标题】:Run simple Java class file with crontab使用 crontab 运行简单的 Java 类文件
【发布时间】:2015-08-18 07:39:54
【问题描述】:

我正在尝试使用 crontab 运行一个简单的 java helloworld 程序。 我做了以下java代码: helloworld.java:

class HelloWorld { 
     public static void main (String args[]) {
         System.out.println("Hello world");
   }
}

然后我尝试按以下顺序从 crontab 运行它:

  1. crontab -e
  2. 最后我插入这一行0,7,10,15,30,46,50,55,59 * * * * root /usr/bin/java /home/shivajividhale/cloudOccular/HelloWorld >/dev/null 2>&1

但是,我无法在 syslog 中看到 helloworld putput。一切都正确吗?如何检查类文件是否正在执行。我也尝试将输出打印到带有时间的文本文件中。但是没有对文件进行任何操作。

正常运行文件java HelloWorld 会产生正确的输出。我还确保 crontab 以新行结尾。

我只想开始让 crontab 运行一个类文件。其他帖子讨论了 crontab 运行 bash 脚本,我只想运行这个简单的程序。我只想打印出 Hello World 以及时间,以确保程序在定义的时间间隔内执行。有什么帮助吗?

【问题讨论】:

  • 如果您将输出重定向到您自己的日志文件会怎样?这行得通吗?
  • 是的,很好,/dev/null 只是把它扔掉了。他应该这样做 > /tmp/mylog.txt 2>&1
  • 嗯,这有帮助。谢谢 :) 但是,我收到一个错误:找不到或加载主类。我认为这与类路径有关。但我不知道如何解决它。

标签: java ubuntu cron crontab


【解决方案1】:

在尝试使用“java”执行类时,您不应提供完整路径。 “java”命令期望只接收类名作为参数。

这就是它正常工作的原因:

java HelloWorld

但这不是:

/usr/bin/java /home/shivajividhale/cloudOccular/HelloWorld

要使后者工作,您只需要提供类名,另外还需要一个“类路径”,以便 Java 知道在哪里可以找到该类。您可以使用“-cp”选项来提供类路径。

试试这个:

/usr/bin/java -cp /home/shivajividhale/cloudOccular/HelloWorld

【讨论】:

  • 为什么我们必须提供类路径才能从 crontab 运行 java 文件,而当您尝试正常执行时却不需要?
  • 当前文件夹默认在类路径中。尝试“正常”运行它,但从不同的文件夹中运行它,您也需要类路径选项。
猜你喜欢
  • 2017-04-24
  • 2014-12-02
  • 2015-06-24
  • 1970-01-01
  • 2016-06-03
  • 1970-01-01
  • 2015-05-05
  • 2011-12-20
  • 2013-02-08
相关资源
最近更新 更多