Package: libmariadb-java Version: 2.7.4-1 Severity: important X-Debbugs-Cc: anonymouse743...@gmail.com
Java 17 refuses to use the jdbc driver for mariadb because of a missing plugin This error persists on both version 2.7.2-1 and 2.7.4-1, but is fixed upstream in the jar file downloaded from mariadb.com for versions 3.0.5 and 2.7.5. Specific error reproduced in java and jshell binaries: ------------------------------------------------------------------------ java --module-path /usr/share/maven-repo/org/mariadb/jdbc/mariadb-java-client/2.7.4/ --add-modules org.mariadb.jdbc -ea TestJDBC Error occurred during initialization of boot layer java.lang.module.FindException: Unable to derive module descriptor for /usr/share/maven-repo/org/mariadb/jdbc/mariadb-java-client/2.7.4/mariadb-java-client-2.7.4.jar Caused by: java.lang.module.InvalidModuleDescriptorException: Provider class org.mariadb.jdbc.credential.aws.AwsIamCredentialPlugin not in module ------------------------------------------------------------------------ jshell --module-path /usr/share/maven-repo/org/mariadb/jdbc/mariadb-java-client/2.7.4/ --add-modules org.mariadb.jdbc -ea TestJDBC Launching JShell execution engine threw: FailOverExecutionControlProvider: FAILED: 0:jdi:hostname(127.0.0.1) -- Exception: java.lang.IllegalArgumentException: Error occurred during initialization of boot layer java.lang.module.FindException: Unable to derive module descriptor for /usr/share/maven-repo/org/mariadb/jdbc/mariadb-java-client/2.7.4/mariadb-java-client-2.7.4.jar Caused by: java.lang.module.InvalidModuleDescriptorException: Provider class org.mariadb.jdbc.credential.aws.AwsIamCredentialPlugin not in module jdk.jshell/jdk.jshell.execution.JdiInitiator.listenTarget(JdiInitiator.java:201) jdk.jshell/jdk.jshell.execution.JdiInitiator.<init>(JdiInitiator.java:111) jdk.jshell/jdk.jshell.execution.JdiDefaultExecutionControl.create(JdiDefaultExecutionControl.java:103) jdk.jshell/jdk.jshell.execution.JdiExecutionControlProvider.generate(JdiExecutionControlProvider.java:152) jdk.jshell/jdk.jshell.spi.ExecutionControl.generate(ExecutionControl.java:179) FailOverExecutionControlProvider: FAILED: 1:jdi:launch(true) -- Exception: java.lang.InternalError: Failed remote launch: java.util.concurrent.ExecutionException: com.sun.jdi.connect.VMStartException: VM initialization failed for: /usr/lib/jvm/java-17-openjdk-amd64/bin/java --add-modules org.mariadb.jdbc --module-path /usr/share/maven-repo/org/mariadb/jdbc/mariadb-java-client/2.7.4 -Xdebug -Xrunjdwp:transport=dt_socket,address=localhost:50629,suspend=y jdk.jshell.execution.RemoteExecutionControl 35629 @ com.sun.jdi.CommandLineLaunch (defaults: home=/usr/lib/jvm/java-17-openjdk-amd64, options=, main=, suspend=true, quote=", vmexec=java) -- {home=home=/usr/lib/jvm/java-17-openjdk-amd64, options=options=--add-modules org.mariadb.jdbc --module-path /usr/share/maven-repo/org/mariadb/jdbc/mariadb-java-client/2.7.4, main=main=jdk.jshell.execution.RemoteExecutionControl 35629, suspend=suspend=true, quote=quote=", vmexec=vmexec=java} jdk.jshell/jdk.jshell.execution.JdiInitiator.reportLaunchFail(JdiInitiator.java:300) jdk.jshell/jdk.jshell.execution.JdiInitiator.launchTarget(JdiInitiator.java:141) jdk.jshell/jdk.jshell.execution.JdiInitiator.<init>(JdiInitiator.java:110) jdk.jshell/jdk.jshell.execution.JdiDefaultExecutionControl.create(JdiDefaultExecutionControl.java:103) jdk.jshell/jdk.jshell.execution.JdiExecutionControlProvider.generate(JdiExecutionControlProvider.java:152) cause: java.util.concurrent.ExecutionException: com.sun.jdi.connect.VMStartException: VM initialization failed for: /usr/lib/jvm/java-17-openjdk-amd64/bin/java --add-modules org.mariadb.jdbc --module-path /usr/share/maven-repo/org/mariadb/jdbc/mariadb-java-client/2.7.4 -Xdebug -Xrunjdwp:transport=dt_socket,address=localhost:50629,suspend=y jdk.jshell.execution.RemoteExecutionControl 35629 FailOverExecutionControlProvider: FAILED: 2:jdi -- Exception: java.lang.IllegalArgumentException: Error occurred during initialization of boot layer java.lang.module.FindException: Unable to derive module descriptor for /usr/share/maven-repo/org/mariadb/jdbc/mariadb-java-client/2.7.4/mariadb-java-client-2.7.4.jar Caused by: java.lang.module.InvalidModuleDescriptorException: Provider class org.mariadb.jdbc.credential.aws.AwsIamCredentialPlugin not in module jdk.jshell/jdk.jshell.execution.JdiInitiator.listenTarget(JdiInitiator.java:201) jdk.jshell/jdk.jshell.execution.JdiInitiator.<init>(JdiInitiator.java:111) jdk.jshell/jdk.jshell.execution.JdiDefaultExecutionControl.create(JdiDefaultExecutionControl.java:103) jdk.jshell/jdk.jshell.execution.JdiExecutionControlProvider.generate(JdiExecutionControlProvider.java:152) jdk.jshell/jdk.jshell.spi.ExecutionControl.generate(ExecutionControl.java:179) ------------------------------------------------------------------------ I poked around and it seems in the metadata requires it but the actual files are missing from org/mariadb/jdbc/credential/ (no aws directory) $unzip -d mdb-2.7.4-1/ /usr/share/maven-repo/org/mariadb/jdbc/mariadb-java-client/2.7.4/mariadb-java-client-2.7.4.jar $rgrep -i aws mdb-2.7.4-1/META-INF/ mdb-2.7.4-1/META-INF/maven/org.mariadb.jdbc/mariadb-java-client/pom.xml: <exclude>**/Aws**</exclude> mdb-2.7.4-1/META-INF/services/org.mariadb.jdbc.credential.CredentialPlugin:org.mariadb.jdbc.credential.aws.AwsIamCredentialPlugin Comparing to version 2.7.5 from mariadb.com I got ------------------------------------------------------------------------ $ diff -qr mdb-2.7.4-1/ mdb-2.7.5/ | grep Only Only in mdb-2.7.5/org/mariadb/jdbc/credential: aws Only in mdb-2.7.5/org/mariadb/jdbc/internal/com/send/authentication/gssapi: WindowsNativeSspiAuthentication.class ------------------------------------------------------------------------ Java Versions: OpenJDK Runtime Environment (build 17.0.3+7-Debian-1deb11u1) OpenJDK 64-Bit Server VM (build 17.0.3+7-Debian-1deb11u1, mixed mode, sharing) -- System Information: Debian Release: 11.3 APT prefers stable-updates APT policy: (500, 'stable-updates'), (500, 'stable-security'), (500, 'stable'), (1, 'testing') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 5.10.0-14-amd64 (SMP w/8 CPU threads) Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE not set Shell: /bin/sh linked to /usr/bin/dash Init: systemd (via /run/systemd/system) LSM: AppArmor: enabled libmariadb-java depends on no packages. libmariadb-java recommends no packages. Versions of packages libmariadb-java suggests: pn libjna-java <none> pn libjna-platform-java <none> pn libslf4j-java <none> -- no debconf information