Uploaded image for project: 'Apache Drill'
  1. Apache Drill
  2. DRILL-6349

Drill JDBC driver fails on Java 1.9+ with NoClassDefFoundError: sun/misc/VM

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 1.13.0
    • 1.15.0
    • Client - JDBC
    • 16:23 apache-drill-1.13.0$ uname -a

      Darwin bix.local 17.5.0 Darwin Kernel Version 17.5.0: Mon Mar  5 22:24:32 PST 2018; root:xnu-4570.51.1~1/RELEASE_X86_64 x86_64

       

    Description

      I'm surprised to be unable to find this issue logged elsewhere, but a quick search yields nothing. Trying to connect with the JDBC driver raises a NoClassDefFoundError for sun.misc.VM, which was removed in Java 9. It is understandable that the full drillbit (or its many dependencies) may have difficult-to-extract dependencies on some sun.misc.* classes, but the JDBC driver should be able to be loaded by any JVM.

       

      Looking at ./common/src/main/java/org/apache/drill/common/config/DrillConfig.java, it appears that a quick workaround could be to make sun.misc.VM.maxDirectMemory called lazily from the one place that uses it: getMaxDirectMemory()

       

       

       

      }}{{16:21 apache-drill-1.13.0$ JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk ./bin/drill-localhost 

      **Connecting to jdbc:drill:drillbit=localhost

      WARNING: An illegal reflective access operation has occurred

      WARNING: Illegal reflective access by org.apache.calcite.avatica.com.google.protobuf.UnsafeUtil (file:/Users/marc/Downloads/apache-drill-1.13.0/jars/3rdparty/avatica-1.10.0.jar) to field java.nio.Buffer.address

      WARNING: Please consider reporting this to the maintainers of org.apache.calcite.avatica.com.google.protobuf.UnsafeUtil

      WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations

      WARNING: All illegal access operations will be denied in a future release

      java.lang.NoClassDefFoundError: sun/misc/VM

        at org.apache.drill.common.config.DrillConfig.<clinit>(DrillConfig.java:49)

        at org.apache.drill.jdbc.impl.DrillConnectionImpl.<init>(DrillConnectionImpl.java:155)

        at org.apache.drill.jdbc.impl.DrillJdbc41Factory.newDrillConnection(DrillJdbc41Factory.java:73)

        at org.apache.drill.jdbc.impl.DrillFactory.newConnection(DrillFactory.java:69)

        at org.apache.calcite.avatica.UnregisteredDriver.connect(UnregisteredDriver.java:138)

        at org.apache.drill.jdbc.Driver.connect(Driver.java:72)

        at sqlline.DatabaseConnection.connect(DatabaseConnection.java:168)

        at sqlline.DatabaseConnection.getConnection(DatabaseConnection.java:214)

        at sqlline.Commands.connect(Commands.java:1083)

        at sqlline.Commands.connect(Commands.java:1015)

        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

        at java.base/java.lang.reflect.Method.invoke(Method.java:564)

        at sqlline.ReflectiveCommandHandler.execute(ReflectiveCommandHandler.java:36)

        at sqlline.SqlLine.dispatch(SqlLine.java:742)

        at sqlline.SqlLine.initArgs(SqlLine.java:528)

        at sqlline.SqlLine.begin(SqlLine.java:596)

        at sqlline.SqlLine.start(SqlLine.java:375)

        at sqlline.SqlLine.main(SqlLine.java:268)

      Caused by: java.lang.ClassNotFoundException: sun.misc.VM

        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)

        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185)

        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)

      ... 20 more

      apache drill 1.13.0 

      "just drill it"

      0: jdbc:drill:drillbit=localhost> 

       

      Attachments

        Issue Links

          Activity

            People

              le.louch Oleg Zinoviev
              mprudhom Marc Prud'hommeaux
              Vova Vysotskyi Vova Vysotskyi
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: