【问题标题】:KSQL Java error when trying to create stream尝试创建流时出现 KSQL Java 错误
【发布时间】:2022-02-03 10:04:15
【问题描述】:

我在 Kafka 中有一个包含数据的主题,我想在 KSQL 中创建一个流,但我一直收到 Java 错误。任何想法可能会发生什么?错误是(注意我已经用 xxx 替换了一些 ksql 命令为简洁起见):

无法编写语句“CREATE STREAM MESSAGES_00 (xxx) WITH (KAFKA_TOPIC='消息',VALUE_FORMAT='JSON');'进入命令主题。

原因:无法将语句 xxx 写入命令主题。

原因:java.lang.NoClassDefFoundError: 无法初始化 类 org.xerial.snappy.Snappy

原因:无法初始化类 org.xerial.snappy.Snappy

任何想法可能导致这种情况?我在 Mac M1 上运行 Java Azul 11​​。

非常感谢您的帮助!

【问题讨论】:

  • 带有消息Could not initialize class ...NoClassDefFoundError 表示JVM 已尝试加载该类但失败。如果您进一步查看日志/输出,您是否会在 JVM 第一次尝试加载类但失败时收到不同的错误消息?启动 Kafka 后第一次收到不同的错误消息吗?
  • 非常感谢您的回复!每当我在 ksql 上运行命令时(即使我加载不同的主题/数据),错误都是相同的。该错误不会出现在任何其他上下文中。查看日志我看到这个'org.xerial.snappy.SnappyError: [FAILED_TO_LOAD_NATIVE_LIBRARY] no native library is found for os.name=Mac and os.arch=aarch64' and 'Could not initialize class org.xerial.snappy.Snappyatorg。 apache.kafka.common.compress.SnappyFactory.wrapForOutput(SnappyFactory.java:38)' 然后有很多这样的行。可能是我正在运行的 JVM 还是我正在授予的权限?
  • 好的,所以我认为这可能是因为我拥有的 snappy.jar 文件没有 Mac m1 的目录(仅 intel x86) - 有什么想法可以得到这个文件吗?仅供参考,这只是研究后的一个想法

标签: java apache-kafka ksqldb


【解决方案1】:

解决了问题:Confluent 中的 snappy.jar 文件不兼容 M1 Mac。下载 jar 文件 (https://repo1.maven.org/maven2/org/xerial/snappy/snappy-java/1.1.8.4/) 并替换现有文件(搜索以找到 snappy.jar 文件存在的位置,因为有多个文件)。

【讨论】:

  • 很高兴您解决了问题。我从未使用过 Kafka,也没有 M1 Mac。我真正能对这个问题做出贡献的是“无法初始化类...”错误掩盖了问题的真正原因。
  • 是的,但这将我推向了正确的方向,所以总是很感激!
猜你喜欢
  • 1970-01-01
  • 2017-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-06
  • 2013-09-12
相关资源
最近更新 更多