【问题标题】:schedule a job in unix by crontab通过 crontab 在 unix 中安排作业
【发布时间】:2014-12-05 05:57:30
【问题描述】:

我创建了一个简单的 java 程序来打印“Hello world”。代码如下

public class Hello {

    public static void main(String[] args) {

        System.out.println("Hello world!");
    }

}

类已经编译并且在同一个目录中。 在同一目录中,我创建了一个名为 temp.sh 的 shell 文件,其中包含命令

java Hello

现在,如果我执行这个 shell 文件,那么 java 程序就会成功执行。 我写了一个 cronjob 每分钟执行一次

* * * * * /home/ashutosh/Documents/javaPractice/temp.sh >> /var/log/myjob.log 2>&1

现在在我的日志中显示

could not load main class java 

我不知道是什么问题。我试过给出java文件的绝对路径,但没有任何帮助。帮帮我。

谢谢

【问题讨论】:

标签: java shell unix ubuntu cron


【解决方案1】:

使用java -cp ./ Hello 运行程序。 -cp ./ 将当前目录添加到类路径中。

【讨论】:

    【解决方案2】:

    【讨论】:

      【解决方案3】:

      您应该在脚本文件中设置环境变量,例如 CLASSPATH。或者在运行脚本之前先获取 .profile 。参考https://unix.stackexchange.com/questions/27289/how-can-i-run-a-cron-command-with-existing-environmental-variables

      【讨论】:

        【解决方案4】:

        在 temp.sh 中尝试使用完整路径:

        java /home/ashutosh/Documents/javaPractice/Hello
        

        【讨论】:

          【解决方案5】:

          您的问题是 cronjob 的工作目录不是您的班级所在的目录。因此,在脚本中添加cd the_right_directory 或使用java -cp some_directory Hello 之类的内容更改java 的类路径

          【讨论】:

            猜你喜欢
            • 2013-07-28
            • 1970-01-01
            • 2015-04-14
            • 2019-10-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-05-14
            相关资源
            最近更新 更多