I think Java requirements documentation needs to be updated. On "Installing Puppet Server" for 7.29.1, it says that Java 8 is still supported.
https://www.puppet.com/docs/puppet/7/server/install_from_packagesOn an Amazon Linux 2 server with Java 8 (java-1.8.0-openjdk-headless.x86_64 / 1:1.8.0.402.b06-1.amzn2.0.1):
After I upgraded puppetserver from 7.14 to 7.16 and puppetdb from 7.15 to 7.17, puppetdb kept crashing:
Requesting shutdown: java.lang.NoSuchMethodError: java.nio.ByteBuffer.position(I)Ljava/nio/ByteBuffer
It seems that Puppet is recently taking advantage of something not present in Java 8 (some method existed at compile time but is not present for the runtime). Upgrading the server to Java 17 resolved the issue (java-17-amazon-corretto-headless.x86_64)