Uploaded image for project: 'Java Driver'
  1. Java Driver
  2. JAVA-4605

Version 4.6.0 isn't compatible with Java 14 (preview), Java 15 (preview) & Java 16

    • Type: Icon: Bug Bug
    • Resolution: Fixed
    • Priority: Icon: Minor - P4 Minor - P4
    • 4.6.1
    • Affects Version/s: 4.6.0
    • Component/s: Build
    • Labels:
      None

      Hi,
      the language compatibility section states that 4.6 version is compatible with java 11 but when using it in a project with a version < 17 you get

       

      java.lang.UnsupportedClassVersionError: org/bson/codecs/record/RecordCodecProvider has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to…)

      This happens becase  {{ mongodb-driver-core}} pulls bson-record-codec, and record-codec naturally requires a java 17.

       

       

      [INFO] |  +- org.mongodb:mongodb-driver-core:jar:4.6.0:compile
      [INFO] |  |  \- org.mongodb:bson-record-codec:jar:4.6.0:runtime

       If bson-record-codec is excluded manually one get into a

       

       

      java.lang.NoClassDefFoundError: org/bson/codecs/record/RecordCodecProvider` because the class is loaded while accessing MongoClientSettings.

       

      because the codec provided (Jep395RecordCodecProvider) is instanced without reflection at MongoClientSettings

      @Immutable
      public final class MongoClientSettings {
          private static final CodecRegistry DEFAULT_CODEC_REGISTRY =
                  fromProviders(asList(new ValueCodecProvider(),
                          new BsonValueCodecProvider(),
                          new DBRefCodecProvider(),
                          new DBObjectCodecProvider(),
                          new DocumentCodecProvider(new DocumentToDBRefTransformer()),
                          new IterableCodecProvider(new DocumentToDBRefTransformer()),
                          new MapCodecProvider(new DocumentToDBRefTransformer()),
                          new GeoJsonCodecProvider(),
                          new GridFSFileCodecProvider(),
                          new Jsr310CodecProvider(),
                          new JsonObjectCodecProvider(),
                          new BsonCodecProvider(),
                          new EnumCodecProvider(),
                          new Jep395RecordCodecProvider()));

      I'm reporting this issue because I:

      • couldn't find it already created
      • got confused with the documentation
      • for a breaking change I was expecting a major version bump.

       

      Regards,

        Juan.

            Assignee:
            ross@mongodb.com Ross Lawley
            Reporter:
            juan@flowics.com Juan F. Codagnone
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: