java - AIX 7.1 crontab 中的 Kafka Producer 出现 JAVA 错误 : Bad Major Version

标签 java cron apache-kafka aix kafka-producer-api

我在深入研究此错误时遇到了一些困难,并且似乎无法通过我的设置找到与此问题相关的任何内容。我确实找到了一些关于一般错误的文章,但经过研究,它们不适用于我的设置。

这是发生的事情......我只是指出它发生在 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)。 如果我在通过 shell 登录系统时运行它,它工作得非常好,没有任何问题。

但是,如果我在每 5 分钟运行一次的 crontab 条目中执行与脚本完全相同的操作,如下所示:

    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
    ...

我的第一个猜测是没有为 crontab 上下文设置 JAVA_HOME 环境变量,因此我在脚本中手动添加了该环境变量以确保保存 JAVA_HOME。

此外,我查看了 kafka/bin/kafka-run-class.sh 文件,并查看了其他可能发挥作用的变量,因为毕竟 kafka-console- Producer.sh 确实引用了该文件。例如,我也手动将该文件中引用的 JAVA_MAJOR_VERSION 设置为脚本的一部分。

还是没有运气。同样,这里让我绞尽脑汁的是,作为一个普通用户登录到 shell,如果我运行该脚本,它就会起作用。仅当使用 crontab 每隔一段时间安排脚本时才不起作用。

一切都指向我一些在 crontab 上下文中不可用的环境变量,但我无法弄清楚。

有什么想法吗?

最佳答案

正如@LorinczyZsigmond所说,设置JAVA_HOME后,然后路径(export PATH="$JAVA_HOME/bin:$PATH"有效。谢谢!

关于java - AIX 7.1 crontab 中的 Kafka Producer 出现 JAVA 错误 : Bad Major Version,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53291145/

相关文章:

java - AudioTrack - 使用 jlayer(java mp3 解码器)的短数组到字节数组失真

java - Quartz Scheduler 为单个作业设置多个触发器时出现问题

apache-kafka - Kafka 如何选择复制的跟随者节点?

amazon-s3 - 正确实现 Kubernetes Liveness 和 Readiness 探测

java - 撒克逊 s9api : When to expect TinyDocumentImpl vs DocumentImpl

java - 使用 iText 旋转 PdfSignatureAppearance

linux - Codeigniter cron 作业问题

apache-spark - kafka kafka-consumer-groups.sh --describe 不返回消费者组的输出

java - 编译 : no such column: date (code 1): , 名称、日期 FROM 成员时出现 SQLiteException : SELECT _id,

mysql - 创建一个 cron 来执行每日 mysql 转储