JDBC 连接 hive2 遇到的java.lang.ClassNotFoundException: org.apache.hive.jdbc.HiveDriver
来源:互联网 发布:c语言基础知识大全 编辑:程序博客网 时间:2024/04/30 12:09
JDBC 连接hive2, 程序挺简单, 跟其他数据库查询类似, 连接/执行查询/得到结果
package hive.server2.query;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;public class ApiQueryTest {private static String driverName = "org.apache.hive.jdbc.HiveDriver";public static void main(String[] args){try {Class.forName(driverName);Connection con = null;con = DriverManager.getConnection("jdbc:hive2://10.68.128.215:10000", "root", "WoLeGeQu");Statement stmt = con.createStatement();ResultSet res = null;String sql = "select * from api_logs";System.out.println("Running: " + sql);res = stmt.executeQuery(sql);System.out.println("ok");while (res.next()) {System.out.println(res.getString(1) + "\t" + res.getString(2) + "\t" + res.getString(3) + "\t" + res.getString(4));}} catch (Exception e) {e.printStackTrace();System.out.println("error");}}}
本地 MyEclipse10, Ctrl+F11 运行正常, 但打包到虚拟机下就不行了, 报错:
[root@localhost test]# java -jar HiveQueryTest.jar java.lang.ClassNotFoundException: org.apache.hive.jdbc.HiveDriver at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:191) at hive.server2.query.ApiQueryTest.main(ApiQueryTest.java:24)error
说找不到org.apache.hive.jdbc.HiveDriver, 想写个shell, 把 $HIVE_LIB目录下jar 都加到CLASSPATH应该行了吧, 结果还是报这个, 都没道理了...
解决办法 1
改成了MANIFEST.MF 加Class-Path, 把需要的jar包的写在这里, 结果OK, 需要注意的是, Class-Path: 冒号后面需要一个空格, 否则会报错:
Error: Invalid or corrupt jarfile HiveQueryTest.jar
Class-Path 后面加上两个jar 包基本就可以:
Class-Path: /home/hive/apache-hive-2.1.0-bin/test/lib/hive-jdbc-2.1.0-standalone.jar /home/hive/apache-hive-2.1.0-bin/test/lib/hadoop-common-2.7.0.jar
再次上传, 运行OK
解决办法 2
讲程序与依赖的包一起打包 , 在Export 对话框中选择: Runnable JAR file 也可以
1 0
- JDBC 连接 hive2 遇到的java.lang.ClassNotFoundException: org.apache.hive.jdbc.HiveDriver
- hive利用jdbc连接时报错:java.lang.ClassNotFoundException:org.apache.hadoop.hive.jdbc.HiveDriver
- java jdbc连接hive2
- IDEA下使用JDBC连接数据库遇到java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
- Java JDBC方式连接HIVE2
- 使用Phoenix api操作hbase 报错java.lang.ClassNotFoundException: org.apache.phoenix.jdbc.PhoenixDriver
- Maven连接Hive:java.lang.ClassNotFoundException: org.apache.hadoop.io.Writable
- java.lang.ClassNotFoundException: org.springframework.jdbc.datasource.DriverManagerDataSource
- java.lang.ClassNotFoundException: org.apache.hadoop.hive.hbase.HBaseSplit
- JDBC连接MySQL产生java.lang.ClassNotFoundException异常
- 在idea配置的请况下遇到java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
- "java.lang.ClassNotFoundException: org.apache.commons.lang.StringUtils"的解决办法
- java jdbc 连接hive
- 连接mysql的时候出现:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
- IDEA连接mysql教程,以及出现java.lang.ClassNotFoundException: com.mysql.jdbc.Driver的解决办法
- java.lang.ClassNoFoundException:org.apache.derby.jdbc.ClientDriver
- jdbc连接sqlserver报错java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriv
- Hive的JDBC连接
- iOS 在Xcode7下免证书真机测试
- spring Model 传递参数的值
- hdoj 2504 又见GCD
- myeclipse更改某种后缀文件的打开方式
- setNeedsDisplay、setNeedsLayout
- JDBC 连接 hive2 遇到的java.lang.ClassNotFoundException: org.apache.hive.jdbc.HiveDriver
- 人物列传
- Qt之图形视图框架
- 多物体 链式运动
- GIT提交代码到远程创库
- Codeforces Round #363 (Div. 2) C. Vacations(逻辑运算)
- HDOJ1222--Wolf and Rabbit
- 创业之动漫社创立分析
- 隐藏你的 Linux 的命令行历史