我是Spring的新手,我正在尝试一个简单的Web动态应用程序从数据库获取数据并使用impala在前端显示。 这是连接器类:
private static final String IMPALAD_HOST = "host";
private static final String IMPALAD_JDBC_PORT = "port";
private static final String CONNECTION_URL = "jdbc:hive2://" + IMPALAD_HOST + ':' + IMPALAD_JDBC_PORT + "/;auth=noSasl";
private static final String JDBC_DRIVER_NAME = "org.apache.hive.jdbc.HiveDriver";
public Connection getConnection() throws ClassNotFoundException{
Connection con = null;
try {
Class.forName(JDBC_DRIVER_NAME);
con = DriverManager.getConnection(CONNECTION_URL,"","");
}catch (SQLException e) {
e.printStackTrace();
}
return con;
}`
在eclipse中的java构建路径中添加了HIve-connector jar。如果我从java类的main方法调用它,则getConnection()有效,但如果我从jsp页面调用此方法,则getConnection()会给hive驱动程序找不到异常。 :
java.lang.ClassNotFoundException: org.apache.hive.jdbc.HiveDriver
答案 0 :(得分:1)
您的webapplication存档中没有hive-jdbc.jar
。即战争档案。打包应用程序时会丢失它。您应该将它放在WEB-INF/lib
目录中。还请确保您还将其添加到eclipse项目的部署程序集中。
它在您运行主类时起作用,因为在构建路径中配置了hive-jdbc.jar
。它与webapplication的观点不同。
注意:除非您要处理它,否则不应抛出ClassNotFoundException
。您应该在运行时在类路径中将所有必需的jar放在应用程序包中。
答案 1 :(得分:1)
您使用的是错误的Driver-Class。
请改用org.apache.hadoop.hive.jdbc.HiveDriver
。