Я создал простую java-программу для печати "Hello world". код выглядит следующим образом
public class Hello {
public static void main(String[] args) {
System.out.println("Hello world!");
}
}
Класс уже скомпилирован и находится в том же каталоге. В том же каталоге я создал файл оболочки с именем temp.sh, который содержит команду
java Hello
теперь, если я запустил этот файл оболочки, программа java выполняется успешно. Я написал cronjob для его выполнения каждую минуту
* * * * * /home/ashutosh/Documents/javaPractice/temp.sh >> /var/log/myjob.log 2>&1
теперь в моих журналах он показывает
could not load main class java
Я не знаю, в чем проблема. Я попытался дать абсолютный путь к файлу java, но ничего не помогло. Помоги мне.
благодаря
Ваша проблема в том, что рабочий каталог cronjob не является каталогом, в котором находится ваш класс. Итак, добавьте cd the_right_directory
в скрипт или измените путь к java с чем-то вроде java -cp some_directory Hello
Внутри temp.sh попробуйте использовать полный путь:
java /home/ashutosh/Documents/javaPractice/Hello
Вы должны установить переменные среды в вашем файле сценария, что-то вроде CLASSPATH. Или просто исходный.profile, прежде чем запускать скрипт. См. Https://unix.stackexchange.com/questions/27289/how-can-i-run-a-cron-command-with-existing-environmental-variables.
используйте java -cp./Hello
чтобы запустить программу. -cp./
добавить текущий каталог в -cp./
к классам.
Взгляните сюда на примеры cron-tab и взгляните на этот пример. Bash Script не может запускать Java-программу в качестве задания cron