搜索

1.8. 已知问题

download PDF

查看以下已知问题,深入了解红帽构建的 Quarkus 3.8 限制和临时解决方案。

1.8.1. Strimzi OAuth 客户端更新到 0.14.0 的原生构建失败

因为将 io.strimzi:strimzi-kafka-oauth 依赖项更新到 0.14.0,导致 Strimzi OAuth 客户端遇到一个已知问题,从而导致 没有加载 io.smallrye.reactive.kafka.graal.Target_com_jayway_jsonpath_DefaultsImpl 指示的原生构建失败。

临时解决方案: 要解决这个问题,请在 classpath 中包含 io.strimzi:kafka-oauth-common 依赖项。

1.8.2. 在 AArch64 上缺少 Kafka Streams 扩展的原生库

由于没有原生库 librocksdbjni-linux-AArch64.so,使用 quarkus-kafka-streams 扩展的应用程序在 AArch64 系统上具有运行时失败。这个问题会抛出 java.lang.RuntimeException: librocksdbjni-linux-AArch64.so,在应用程序启动过程中没有找到 JAR 错误。此错误可防止成功初始化 RocksDB 组件,这对 Kafka Streams 应用程序至关重要。

临时解决方案:目前还没有可用的临时解决方案。

java.lang.RuntimeException 示例: librocksdbjni-linux-AArch64.so 错误

09:32:54,059 INFO  [app] ERROR: Failed to start application (with profile [prod])
09:32:54,059 INFO  [app] java.lang.RuntimeException: Failed to start quarkus
09:32:54,060 INFO  [app] 	at io.quarkus.runner.ApplicationImpl.doStart(Unknown Source)
09:32:54,060 INFO  [app] 	at io.quarkus.runtime.Application.start(Application.java:101)
09:32:54,060 INFO  [app] 	at io.quarkus.runtime.ApplicationLifecycleManager.run(ApplicationLifecycleManager.java:111)
09:32:54,061 INFO  [app] 	at io.quarkus.runtime.Quarkus.run(Quarkus.java:71)
09:32:54,061 INFO  [app] 	at io.quarkus.runtime.Quarkus.run(Quarkus.java:44)
09:32:54,061 INFO  [app] 	at io.quarkus.runtime.Quarkus.run(Quarkus.java:124)
09:32:54,062 INFO  [app] 	at io.quarkus.runner.GeneratedMain.main(Unknown Source)
09:32:54,062 INFO  [app] Caused by: java.lang.ExceptionInInitializerError
09:32:54,063 INFO  [app] 	at io.quarkus.kafka.streams.runtime.KafkaStreamsRecorder.loadRocksDb(KafkaStreamsRecorder.java:14)
09:32:54,063 INFO  [app] 	at io.quarkus.deployment.steps.KafkaStreamsProcessor$loadRocksDb1611413226.deploy_0(Unknown Source)
09:32:54,063 INFO  [app] 	at io.quarkus.deployment.steps.KafkaStreamsProcessor$loadRocksDb1611413226.deploy(Unknown Source)
09:32:54,064 INFO  [app] 	... 7 more
09:32:54,064 INFO  [app] Caused by: java.lang.RuntimeException: librocksdbjni-linux-AArch64.so was not found inside JAR.
09:32:54,065 INFO  [app] 	at org.rocksdb.NativeLibraryLoader.loadLibraryFromJarToTemp(NativeLibraryLoader.java:118)
09:32:54,065 INFO  [app] 	at org.rocksdb.NativeLibraryLoader.loadLibraryFromJar(NativeLibraryLoader.java:102)
09:32:54,065 INFO  [app] 	at org.rocksdb.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:82)
09:32:54,066 INFO  [app] 	at org.rocksdb.RocksDB.loadLibrary(RocksDB.java:70)
09:32:54,066 INFO  [app] 	at org.rocksdb.RocksDB.<clinit>(RocksDB.java:39)
09:32:54,067 INFO  [app] 	... 10 more

1.8.3. Microsoft Windows 上 Kafka Streams 扩展缺少原生库

在 Microsoft Windows 上使用 quarkus-kafka-streams 扩展的应用程序会因为没有原生库 librocksdbjni-win64.dll 而有运行时失败。这个问题会在应用程序启动过程中 没有找到 java.lang.RuntimeException: librocksdbjni-win64.dll in JAR 错误。

此错误可防止成功初始化 RocksDB 组件,这对 Kafka Streams 应用程序至关重要。

临时解决方案:目前还没有可用的临时解决方案。

java.lang.RuntimeException: librocksdbjni-win64.dll 错误

13:07:08,118 INFO  [app] ERROR: Failed to start application (with profile [prod])
13:07:08,118 INFO  [app] java.lang.RuntimeException: Failed to start quarkus
13:07:08,118 INFO  [app] 	at io.quarkus.runner.ApplicationImpl.doStart(Unknown Source)
13:07:08,118 INFO  [app] 	at io.quarkus.runtime.Application.start(Application.java:101)
13:07:08,118 INFO  [app] 	at io.quarkus.runtime.ApplicationLifecycleManager.run(ApplicationLifecycleManager.java:111)
13:07:08,118 INFO  [app] 	at io.quarkus.runtime.Quarkus.run(Quarkus.java:71)
13:07:08,118 INFO  [app] 	at io.quarkus.runtime.Quarkus.run(Quarkus.java:44)
13:07:08,118 INFO  [app] 	at io.quarkus.runtime.Quarkus.run(Quarkus.java:124)
13:07:08,118 INFO  [app] 	at io.quarkus.runner.GeneratedMain.main(Unknown Source)
13:07:08,118 INFO  [app] Caused by: java.lang.ExceptionInInitializerError
13:07:08,118 INFO  [app] 	at io.quarkus.kafka.streams.runtime.KafkaStreamsRecorder.loadRocksDb(KafkaStreamsRecorder.java:14)
13:07:08,118 INFO  [app] 	at io.quarkus.deployment.steps.KafkaStreamsProcessor$loadRocksDb1611413226.deploy_0(Unknown Source)
13:07:08,118 INFO  [app] 	at io.quarkus.deployment.steps.KafkaStreamsProcessor$loadRocksDb1611413226.deploy(Unknown Source)
13:07:08,118 INFO  [app] 	... 11 more
13:07:08,118 INFO  [app] Caused by: java.lang.RuntimeException: librocksdbjni-win64.dll was not found inside JAR.
13:07:08,118 INFO  [app] 	at org.rocksdb.NativeLibraryLoader.loadLibraryFromJarToTemp(NativeLibraryLoader.java:118)
13:07:08,118 INFO  [app] 	at org.rocksdb.NativeLibraryLoader.loadLibraryFromJar(NativeLibraryLoader.java:102)
13:07:08,118 INFO  [app] 	at org.rocksdb.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:82)
13:07:08,118 INFO  [app] 	at org.rocksdb.RocksDB.loadLibrary(RocksDB.java:70)
13:07:08,118 INFO  [app] 	at org.rocksdb.RocksDB.<clinit>(RocksDB.java:39)
13:07:08,118 INFO  [app] 	... 14 more

1.8.4. 明确说明原生构建期间缺少 Vert.x 类

在原生构建期间,开发人员可能会获取 Vert.x 类的 java.lang.ClassNotFoundException 错误,如 io.vertx.core.http.impl.Http1xServerResponseio.vertx.core.parsetools.impl.RecordParserImpl。这些错误在构建应用程序时发生,包括使用 quarkus-qpid-jms 扩展的应用程序,而无需包括 Vert.x 作为直接或传输的依赖项。

阐明 quarkus-qpid-jms 不直接使用 Vert.x 非常重要。这个问题来自 quarkus-netty 扩展,quarkus-qpid-jms 使用它。quarkus-netty 扩展负责在原生构建期间为运行时初始化注册这些 Vert.x 类,而无需验证其存在。当构建中没有引入 Vert.x 的扩展时,这会导致注意的例外。

这些 ClassNotFoundException 错误会在构建过程中记录,但不影响应用程序的功能。它们是原生构建过程的结果,以及依赖项在红帽构建的 Quarkus 中处理的方式,特别是通过 quarkus-netty 模块。

java.lang.ClassNotFoundException 错误示例

java.lang.ClassNotFoundException: io.vertx.core.http.impl.Http1xServerResponse
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageClassLoader.loadClass(NativeImageClassLoader.java:652)
	... (further stack trace details)
java.lang.ClassNotFoundException: io.vertx.core.parsetools.impl.RecordParserImpl
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageClassLoader.loadClass(NativeImageClassLoader.java:652)
	... (further stack trace details)

临时解决方案:要防止这些日志条目并确保正确识别所有依赖项,您可以选择将 quarkus-vertx 扩展添加到项目中。

1.8.5. 在 OpenShift 上测试 JVM 模式中的 AArch64 支持限制

从 Red Hat build of Quarkus 3.2 开始,在带有 AArch64 的 Red Hat OpenShift Container Platform 上进行 JVM 的测试管道会有一些已知的限制:

  • AArch64 不支持 Red Hat Serverless。在 AArch64 架构上运行的 OpenShift 集群上支持 Red Hat Serverless 的功能请求在 SRVCOM-2472 中进行跟踪,计划在 Serverless 1.33 中包含支持。
  • AArch64 不支持 Red Hat AMQ Streams。因为 AArch64 上还不支持 AMQ Streams,所以此集成的支持还没有被测试。这个问题目前没有在红帽问题管理系统中跟踪。
  • AArch64 不支持 Red Hat Single Sign-On。因为 Red Hat Single Sign-On 和 Red Hat build of Keycloak 尚不在 AArch64 上被支持,所以与 Red Hat build of Quarkus 应用程序的集成还没有被测试。
  • AArch64 不支持服务绑定。因为 AArch64 还不支持与 Red Hat build of Quarkus 进行服务绑定集成的绑定服务,所以还没有测试此集成。另外,OpenShift Service Binding Operator 在 OpenShift Container Platform (OCP) 4.13 及更高版本中已弃用,计划在以后的 OCP 发行版本中删除。

AArch64 支持仅限于 Red Hat Universal Base Image (UBI)容器,且不会扩展到裸机环境。

临时解决方案:目前还没有可用的临时解决方案。

1.8.6. 对 org.apache.maven:maven:pom:3.6.3 的依赖项可能会导致代理问题

在使用某些 Quarkus 扩展时,可能会解决对 org.apache.maven:maven:pom:3.6.3 的依赖。这不适用于 Gradle 插件,但会影响到任何具有 io.smallrye:smallrye-parent:pom:37 的项目,在其父项目对象模型(POM)层次结构中。对于代理后面的环境,这个依赖关系可能会导致构建失败,以限制对版本 3.6.x 的 org.apache.maven 工件的访问。Maven 3.6.3 中的二进制软件包都作为 Quarkus 核心框架或支持的 Quarkus 扩展的依赖项下载。

临时解决方案:目前还没有可用的临时解决方案。

如需更多信息,请参阅 QUARKUS-1025 - Gradle 插件在 maven core 3.6.x 中拖动

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.