I'm trying to run a simple java helloworld program with crontab.
I made the following java code:
helloworld.java:
class HelloWorld {
public static void main (String args[]) {
System.out.println("Hello world");
}
}
I then try to run this from a crontab in the following sequence:
crontab -e
At the end i insert this line 0,7,10,15,30,46,50,55,59 * * * * root /usr/bin/java /home/shivajividhale/cloudOccular/HelloWorld >/dev/null 2>&1
However, I am not able to see the helloworld putput in the syslog. Is everything correct? How do I check if the class file is being executed or not. I tried printing the output to a text file with the time on it as well. But nothing is being done on the file.
Running the file normally java HelloWorld yields proper output. I also made sure the crontab ends with a new line.
I just want to get started with having a class file run by the crontab. Oher posts discuss about crontab running bash scripts, I just want to run just this simple program. I just want to print out Hello World along with the time to ensure program execution at the defined intervals. Any help?
解决方案
You should not provide a full path when trying to execute a class with "java". The "java" command expects to receive just the class name as an argument.
That's why this works properly:
java HelloWorld
But this does not:
/usr/bin/java /home/shivajividhale/cloudOccular/HelloWorld
To make the latter work, you need to provide just the class name, and additionally a "classpath" so that Java knows where to find that class. You can use the "-cp" option to provide the classpath.
Try this:
/usr/bin/java -cp /home/shivajividhale/cloudOccular/ HelloWorld