You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hive.apache.org by "Francisco Guerrero (Jira)" <ji...@apache.org> on 2019/09/11 07:58:00 UTC
[jira] [Created] (HIVE-22190) Class HiveMetaStoreClient fails to
instantiate when running on Java 11
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)