2015-12-14 3 views
3

Оказывается проблема при запуске Java-кода из задания CRON.Запуск кода Java из задания CRON

Я пытаюсь запустить файл ".sh" из CRON так:

* * * * * root sh /run-test.sh >> /var/log/cron.log 
# empty line 

и это run-test.sh имеет:

java HelloWorld 

Когда я перейти к корневой папке т.е. «/» и команда пуска:

sh run-test.sh 

Он правильно выполнит мой класс HelloWorld и даст мне желаемый результат.

Но через вкладку CRON всегда Сэя:

Error: Could not find or load main class HelloWorld 

Я не могу судить, что может быть причиной этого. Немедленные ответы будут полезны. Спасибо

+0

Пожалуйста, покажите содержимое 'run-test.sh'. Cron очищает среду, поэтому вам нужно ее настроить (например, «CLASSPATH»). Кроме того, вы используете Java-процесс как * root * ?! – cadrian

+0

run-test.sh содержит только java HelloWorld и да, я запускаю его как root. – gomzee

+0

Вы сделали свой основной класс перед сборкой jar из вашей IDE? –

ответ

1

Вы должны использовать полное квалифицированное имя для класса в вашем файле оболочки. Например com.nri.gov.master.ctrl.HelloWorld как this--

$ JAVA com.nri.gov.master.ctrl.HelloWorld $ Var 2 >> /var/log/console.log

+0

Пробовал это, но это также приводит к тому же ответу. – gomzee

1

Проверьте следующие пункты,

  • Set Java дома: export JAVA_HOME=[path-to-java-directory]
  • Java требует полного имени пакета класса: java some.package.HelloWorld
  • Класс Java должен быть доступен в пути к классам. Например, чтобы установить банку в пути к классам: export CLASSPATH=yourjar.jar
  • Рабочий пример для установки/запуска хрон:

* * * * * export JAVA_HOME=[path-to-java-directory]; /bin/sh your-executable-file.sh >> your-application-log-file.log

2

вам может понадобиться изменить текущий рабочий каталог для хрон.

* * * * * root cd/&& sh /run-test.sh >> /var/log/cron.log 

У вас нет абсолютных путей в вашем скрипте, поэтому он будет работать относительно рабочего каталога.

+0

Да, ваш код имеет смысл +1. Как, когда я попытался запустить мой Java-класс от CRON работы с кодом, как: * * * * * корень (кд /; Java HelloWorld) >> /var/log/cron.log он работает отлично. Благодаря :) – gomzee

Смежные вопросы