I have scheduled my job to run every day at 12:30 with this command:
30 12 * * * java -jar test.jar
It throws error:
/bin/sh: 1: java: not found
I tried to run this command: java -jar test.jar
from shell and it worked just fine.
Now I don't understand. I would say it is happening because JAVA_HOME
environment variable is not set, but then why it works from shell?
The error tells you that the shell could not locate the java
binary to execute. This has nothing to do with the JAVA_HOME
environment variable, but with the PATH
variable which is consulted by sh
to find any command.
When you run your task from cron
, the shell did not receive the same initialization as your interactive shell where the command works for you. You'll equally find that JAVA_HOME
isn't set there, either.