通过JDBC连接到Hive时,Java NoSuchMethodError

尝试从Eclipse中的简单Java程序连接到Hive时,我收到以下错误。 看起来它连接然后抛出此错误。 我可以通过直线本地连接到Hive Thrift服务器而不会出现问题。

libthrift .jar文件都是0.9.2。 在客户端和服务器上相同。 以下.jar文件的服务器和客户端版本是相同的:

hive-jdbc*.jar 1.2.0 hive-service*.jar 1.2.0 libfb303-0.9.0.jar 0.9.2 libthrift-0.9.0.jar 0.9.2 log4j-1.2.16.jar 1.2.16 slf4j-api-1.6.1.jar 1.7.5 slf4j-log4j12-1.6.1.jar 1.7.5 commons-logging-1.0.4.jar 1.1.3 Exception in thread "main" java.lang.NoSuchMethodError: org.apache.thrift.protocol.TProtocol.getScheme()Ljava/lang/Class; at org.apache.hive.service.cli.thrift.TCLIService$OpenSession_args.write(TCLIService.java:1854) at org.apache.thrift.TServiceClient.sendBase(TServiceClient.java:63) at org.apache.hive.service.cli.thrift.TCLIService$Client.send_OpenSession(TCLIService.java:150) at org.apache.hive.service.cli.thrift.TCLIService$Client.OpenSession(TCLIService.java:142) at org.apache.hive.jdbc.HiveConnection.openSession(HiveConnection.java:578) at org.apache.hive.jdbc.HiveConnection.(HiveConnection.java:192) at org.apache.hive.jdbc.HiveDriver.connect(HiveDriver.java:105) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) 

我正在使用的libthrift版本被Apache列为具有getScheme()方法。

任何帮助将不胜感激!

确保已在类路径中包含所需的jar文件。 正如你所说的那样在你当地工作,我猜你做到了。 如果它不在实际服务器上工作,那么请确保已部署所需的jar。