微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有没有办法在 Java 8 运行时中使用 flatc 生成的类?

如何解决有没有办法在 Java 8 运行时中使用 flatc 生成的类?

我的工作代码在 OpenJDK Java 9 中运行良好,但在 OPenJDK Java 8 中运行时会抛出下面的 NoSuchMethodError。即使 flatc 构建在具有 Java 8 的系统上,我仍然会收到此错误。有没有办法生成可以在 Java 8 中工作的类?

    Exception in thread "main" java.lang.NoSuchMethodError: java.nio.ByteBuffer.position(I)Ljava/nio/ByteBuffer;
at com.google.flatbuffers.FlatBufferBuilder.createString(FlatBufferBuilder.java:605)
at jeromq_and_flatbuffers.io.MonsterIO.writeto(MonsterIO.java:54)
at jeromq_and_flatbuffers.io.MonsterIO.writeto(MonsterIO.java:1)
at jeromq_and_flatbuffers.core.MonsterPublisher.sendMessage(MonsterPublisher.java:80)
at jeromq_and_flatbuffers.core.MonsterPublisher.run(MonsterPublisher.java:104)
at jeromq_and_flatbuffers.core.Main.lambda$0(Main.java:46)
at java.util.Optional.ifPresent(Optional.java:159)
at jeromq_and_flatbuffers.core.Main.main(Main.java:46)

我意识到 Java 9 中有很多 NIO 改进,但我的网络 IT 限制了我们使用 Java 8。

解决方法

一个解决方案是不使用从 Maven 中央存储库下载的 Flatbuffers 2.0.0 依赖项,它是用 Java 9 或更高版本构建的。相反,通过下载 Flatbuffers 源代码从源代码构建 Flatbuffers jar,然后在 Java 8 环境中执行顶级目录中的 maven 包。然后在目标中取出 jar 并在您的应用程序中使用它。这让我克服了错误。

更好的解决方案是使用 Flatbuffers 2.0.2 或更高版本,这可以解决问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。