Francisco Guerrero created HIVE-22190:
-----------------------------------------

             Summary: Class HiveMetaStoreClient fails to instantiate when 
running on Java 11
                 Key: HIVE-22190
                 URL: https://issues.apache.org/jira/browse/HIVE-22190
             Project: Hive
          Issue Type: Bug
          Components: Hive
    Affects Versions: 2.3.6
         Environment: Java Version: "11.0.3" 2019-04-16 LTS
            Reporter: Francisco Guerrero


HiveMetaStoreClient fails to initialize in JDK with error:
Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient with 
cause
class [Ljava.lang.Object; cannot be cast to class [Ljava.net.URI; 
([Ljava.lang.Object; and [Ljava.net.URI; are in module java.base of loader 
'bootstrap')

This is due the way toArray is being invoked. The compiles and runs well on 
Java 8. But when running in Java 11, the class instantiation fails. This is a 
snippet of code to reproduce the issue:

{noformat}
URI metastoreUris[] = new URI[2];
try {
    metastoreUris[0] = new URI("http://google.com";);
} catch (URISyntaxException e) {
    e.printStackTrace();
}
List uriList = Arrays.asList(metastoreUris);
Collections.shuffle(uriList);
metastoreUris = (URI[]) uriList.toArray();
{noformat}

This is causing any client using HiveMetaStoreClient fail, because the 
constructor is unable to initialize. The type erasure is handled differently in 
Java 8 and Java 11.



--
This message was sent by Atlassian Jira
(v8.3.2#803003)

Reply via email to