我创建了一个简单的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文件的绝对路径,但没有任何帮助。帮助我。
谢谢
答案 0 :(得分:1)
在temp.sh内部尝试使用完整路径:
java /home/ashutosh/Documents/javaPractice/Hello
答案 1 :(得分:1)
您的问题是crontab的工作目录不是您的类所在的目录。因此,在脚本中添加cd the_right_directory
或使用java -cp some_directory Hello
答案 2 :(得分:0)
使用java -cp ./ Hello
来运行该程序。 -cp ./
将当前目录添加到类路径中。
答案 3 :(得分:0)
答案 4 :(得分:0)
您应该在脚本文件中设置环境变量,例如CLASSPATH。或者在运行脚本之前先输入.profile。请参阅https://unix.stackexchange.com/questions/27289/how-can-i-run-a-cron-command-with-existing-environmental-variables。