这个问题在这里已经有答案了:
为什么我在java中遇到noclassdeffounderror(28个答案)
两年前关门了。
我对hadoop和hive也是新手。我试图通过创建java项目并添加以下所有必需的库,从java连接到hive
$HIVE_HOME/lib/*.jar
$HADOOP_HOME/share/hadoop/mapreduce/*.jar
$HADOOP_HOME/share/hadoop/common/*.jar
下面是我连接hive数据库的示例代码。
package com.stpl.hive.jdbc;
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.DriverManager;
public class HiveSample {
//private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver";
private static String driverName = "org.apache.hive.jdbc.HiveDriver";
public static void main(String[] args) throws SQLException,
ClassNotFoundException {
// Register driver and create driver instance
Class.forName(driverName);
// get connection
Connection con = DriverManager.getConnection(
"jdbc:hive2://localhost:10000/default", "", "");
Statement stmt = con.createStatement();
stmt.execute("CREATE DATABASE newdatabase");
System.out.println("Database userdb created successwdbfully.");
con.close();
}
}
在运行时,我得到下面的错误
Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class org.apache.derby.jdbc.AutoloadedDriver40
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at java.sql.DriverManager.isDriverAllowed(DriverManager.java:556)
at java.sql.DriverManager.getConnection(DriverManager.java:661)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at com.stpl.hive.jdbc.HiveSample.main(HiveSample.java:18)
我是否遗漏了其他要添加到项目中的jar?请帮我解决这个错误。我使用的是Hive2.3.2版本。请问我是否需要其他细节来解决这个问题。
1条答案
按热度按时间uklbhaso1#
java.lang.NoClassDefFoundError
在运行时不存在类的定义时发生。无法初始化类org.apache.derby.jdbc.autoloadeddriver40
您似乎缺少derby的驱动程序库,可以通过包含
derby-10.5.3.0.jar
.