【发布时间】:2017-08-10 20:01:29
【问题描述】:
当我尝试在 IDEA 中运行代码时,我没有收到此错误,但是在我将其打包并尝试使用
运行 jar 之后java -cp app.jar com.hive.connect.controller.RecordController
我得到了这个异常。
java.lang.ClassNotFoundException: org.apache.hive.jdbc.HiveDriver
我的专家
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-jdbc</artifactId>
<version>1.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-core</artifactId>
<version>1.2.1</version>
</dependency>
</dependencies>
我的代码
public class RecordController {
private static String driverName = "org.apache.hive.jdbc.HiveDriver";
public static void main(String[] args) throws SQLException, ClassNotFoundException {
Class.forName(driverName);
Connection con = DriverManager
.getConnection("jdbc:hive2://host:port/db;" +
"principal=principal");
Statement stmt = con.createStatement();
String tableName = "evkuzmin_testHiveDriverTable";
stmt.execute("drop table if exists " + tableName);
stmt.execute("create table " + tableName + " (key int, value string)");
}
}
为什么会这样?
编辑 完全错误
Exception in thread "main" 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:190)
at com.hive.connect.controller.RecordController.main(RecordController.java:18)
【问题讨论】:
-
您指定
-cp app.jar,这意味着它的所有依赖项都不在当前类路径上。 -
@Mark 感谢您指出这一点。在这里检查了如何使用依赖项制作 jar stackoverflow.com/questions/1729054/…
-
这可能是一种非常脆弱的方法,尤其是对于可能存在于多个依赖项中的资源(例如服务提供者定义);您可能希望包含
ClassNotFoundException的完整堆栈跟踪 -
@Mark Brittle 怎么样?添加了完整的错误。
标签: java maven hadoop jdbc hive