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

ki1q1bka  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(434)

我有在openjdk java 9中运行良好的工作代码,但在openjdk java 8中运行时会抛出下面的nosuchmethoderror。即使flatc构建在使用java 8的系统上,我仍然会遇到此错误。有没有办法生成在Java8中工作的类?

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)

我意识到Java9中有许多nio改进,但我的网络it将我们限制在Java8上。

lx0bsm1f

lx0bsm1f1#

解决方案是不使用从maven central repo下载的flatbuffers依赖项,后者是用java 9或更高版本构建的。相反,通过下载flatbuffers源代码,然后在Java8环境中的顶级目录中执行maven包,从源代码构建flatbuffers jar。然后将jar放在target中,并在应用程序中使用它。这使我克服了错误。

相关问题