Kafka Producer в AIX 7.1 crontab получает ошибку JAVA: плохая основная версия - PullRequest
0 голосов
/ 14 ноября 2018

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

Вот что происходит ... и я только указал, что это происходит в IBM AIX 7.1 в случае, еслиесть что-то специфическое для AIX, на которое я должен обратить внимание, но я бы предположил, что эта ошибка также может произойти и на машинах с Linux.

Цель:

Запустить команду, направить команду в kafka-console-producer.sh в конкретную тему Kafka, например:

    ps -ef | /kafka/bin/kafka-console-producer.sh --broker-list <IP>:9092 --topic running_processes

Приведенная выше команда получает вывод "ps -ef" и отправляет его в мою тему (running_processes). Это прекрасно работает без проблем, если я запускаю его при входе в систему через оболочку.

Однако, если я делаю то же самое, что и скрипт, в записи crontab, которая запускается каждый5 минут, например:

    0,5,10,15,20,25,30,35,40,45,50,55 <path of script> >> <path of log> 2>&1

Вот что я получаю в своем файле журнала:

    ...
    Exception in thread "main" java.lang.UnsupportedClassVersionError: JVMCFRE003 bad major version; class=org/apache/kafka/clients/producer/Callback, offset=6
    ...

Моим первым предположением было то, что переменная среды JAVA_HOME не была установлена ​​для контекстаcrontab, поэтому я вручную добавил эту переменную окружения в скрипт, чтобы убедиться, что JAVA_HOME сохранен.

Кроме того, я посмотрел файл kafka / bin / kafka-run-class.sh и посмотрел на другие возможные переменныекоторые вступают в игру, так как в конце концов kafka-console-producer.sh ссылается на этот файл.Например, я вручную установил JAVA_MAJOR_VERSION, на который есть ссылка в этом файле, как часть скрипта.

Все еще не повезло.Опять же, что ломает мне голову, так это то, что обычный пользователь, вошедший в оболочку, если я запускаю скрипт, работает.Это не работает только при использовании crontab для планирования сценария с интервалом.

Все указывает мне на некоторую переменную окружения, недоступную в контексте crontab, но я не могу понять это.

Есть идеи?

1 Ответ

0 голосов
/ 14 ноября 2018

Как сказал @LorinczyZsigmond, после установки JAVA_HOME, а затем пути (экспорт PATH = "$ JAVA_HOME / bin: $ PATH" сработал. Спасибо!

...