[
https://issues.apache.org/jira/browse/HIVE-22915?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17283290#comment-17283290
]
James Baiera commented on HIVE-22915:
-------------------------------------
I encountered this problem because the guava libraries are embedded into the
hive-exec jar. If you have hive libraries on your classpath and attempt to
interact with anything using a newer version of Guava this will break it. You
can try and force a newer version of guava to be in front of the hive jar on
the classpath, but this is not a reasonable work around. The other
recommendations I've seen are to compile the hive jars yourself. That
workaround is arguably worse.
These packages that have been included into hive should be relocated during the
build process. It's one thing if it's hadoop libraries where maybe it's
reasonable for them to override those included in the hive jar. Guava is very
different. Guava is such a contentious library for a number of reasons: lots of
versions, lots of breaking changes, lots of new features that can't run on
older versions. If you're using guava and it's packaged into an artifact you
release, then it should really be moved to a different package in the final
artifact.
> java.lang.NoSuchMethodError:
> com.google.common.base.Preconditions.checkArgument
> -------------------------------------------------------------------------------
>
> Key: HIVE-22915
> URL: https://issues.apache.org/jira/browse/HIVE-22915
> Project: Hive
> Issue Type: Bug
> Components: Hive
> Affects Versions: 2.3.4
> Environment: Ubuntu 16.04
> Reporter: pradeepkumar
> Priority: Critical
>
> Hi Team,
> I am Not able to run hive. Getting following error on hive version above 3.X,
> i tried all the versions. It is very critical issue.SLF4J: Class path
> contains multiple SLF4J bindings.
> SLF4J: Found binding in
> [jar:file:/home/sreeramadasu/Downloads/hive/lib/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
> SLF4J: Found binding in
> [jar:file:/home/sreeramadasu/Downloads/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
> SLF4J: See [http://www.slf4j.org/codes.html#multiple_bindings] for an
> explanation.
> SLF4J: Actual binding is of type
> [org.apache.logging.slf4j.Log4jLoggerFactory]
> Exception in thread "main" java.lang.NoSuchMethodError:
> com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V
> at org.apache.hadoop.conf.Configuration.set(Configuration.java:1357)
> at org.apache.hadoop.conf.Configuration.set(Configuration.java:1338)
> at org.apache.hadoop.mapred.JobConf.setJar(JobConf.java:536)
> at org.apache.hadoop.mapred.JobConf.setJarByClass(JobConf.java:554)
> at org.apache.hadoop.mapred.JobConf.<init>(JobConf.java:448)
> at org.apache.hadoop.hive.conf.HiveConf.initialize(HiveConf.java:4045)
> at org.apache.hadoop.hive.conf.HiveConf.<init>(HiveConf.java:4003)
> at
> org.apache.hadoop.hive.common.LogUtils.initHiveLog4jCommon(LogUtils.java:81)
> at org.apache.hadoop.hive.common.LogUtils.initHiveLog4j(LogUtils.java:65)
> at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:702)
> at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:686)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at org.apache.hadoop.util.RunJar.run(RunJar.java:323)
> at org.apache.hadoop.util.RunJar.main(RunJar.java:236)
>
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)