2016-03-25 16 views
5

Tôi khá mới đối với Java. Tôi đang cố gắng để kết nối với máy chủ hive qua java và sử dụng mẫu mã từ https://cwiki.apache.org/confluence/display/Hive/HiveServer2+Clients#HiveServer2Clients-JDBCClassNotFoundException: org.apache.hive.jdbc.HiveDriver

import java.sql.SQLException; 

public class HiveJdbcClient { 
    //private static String driverName = "org.apache.hive.jdbc.HiveDriver"; 
    public static void main(String[] args) throws SQLException { 
     try { 
      Class.forName("org.apache.hive.jdbc.HiveDriver"); 
     } catch (ClassNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      System.exit(1); 
     } 
    } 
} 

tôi đặt tất cả các lọ ở vị trí cần thiết và cập nhật các tập tin pom, nhưng nhận

java.lang.ClassNotFoundException: org.apache.hive.jdbc.HiveDriver 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:264) 
    at HiveJdbcClient.main(HiveJdbcClient.java:7) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) 

Tôi tìm kiếm cho một giải pháp trong một thời gian, nhưng không thể giải quyết nó. Vui lòng cho tôi biết cách khắc phục điều này.

+0

bạn có thể làm cách nào để bạn giải quyết vấn đề này? – DharaPPatel

Trả lời

8

Điều này là do không phù hợp trong phiên bản hivesever2.Nếu phiên bản Hive lớn hơn 0,13 thì bạn có thể phải sử dụng điều này.

<dependency> 
      <groupId>org.apache.hive</groupId> 
      <artifactId>hive-jdbc</artifactId> 
      <version>1.1.0</version> 
</dependency> 

Ngoài ra hãy chắc chắn rằng bạn thêm jar này trong bạn đường dẫn lớp ..

+0

Cảm ơn bạn! Nó đã làm việc!!! – pam

+1

Đi đâu? Giả sử nó là tập tin cấu hình. Tên tệp là gì. – curtisp

+5

bạn có thể đề cập đến nơi áp dụng thay đổi này không? Tôi đang đối mặt với các vấn đề tương tự – DharaPPatel

2

Bạn cần đưa thư viện vào dự án của mình (tệp JAR) bao gồm lớp thiếu org.apache.hive.jdbc.HiveDriver. Here nó là một liên kết đến phiên bản 0.8.0 của nó.

+0

Tôi có sẵn hive-jdbc-0.9.0. – pam

+0

bạn đang sử dụng nhật thực? bạn đã chắc chắn 'jar' nằm trên classpath của bạn chưa? làm thế nào bạn bao gồm nó trong dự án của bạn? Hãy thử tạo một dòng trong tệp của bạn như 'HiveDriver h;' và cố gắng nhập dòng đó và biên dịch, do đó bạn sẽ kiểm tra xem bạn có đính kèm nó không. –

2

Từ theo dõi ngăn xếp bạn đã đăng Tôi giả sử rằng bạn đang chạy thông qua IntelliJ và gặp phải lỗi này.

POM mô tả cách xây dựng dự án không phải cách thực hiện dự án đã biên dịch. Trong lớp của bạn, bạn không nhập org.apache.hive.jdbc.HiveDriver vì vậy tôi tưởng tượng rằng IntelliJ sẽ không đảm bảo rằng JAR chứa của nó được truyền cho JVM trên đường dẫn lớp.

Điều tôi tin rằng bạn phải làm trong trường hợp này là tự chuyển vào vị trí của hive jar trên đường dẫn lớp. Một nơi nào đó trong các thiết lập dự án (KHÔNG phải POM) trong IDE của bạn, nơi sẽ là cài đặt thời gian chạy, bạn sẽ cần phải bao gồm công tắc dòng lệnh cp hoặc -classpath sẽ trỏ đến JAR hive. Hoặc cách khác bạn có thể làm như David Fernadez nói và nhập khẩu các lớp học mà nên buộc IntelliJ để vượt qua JAR trong trên classpath.

+0

Cảm ơn bạn. Tôi đã đi khá lâu rồi. Tôi đã thử cả ba câu trả lời và giải pháp của Aman đã khắc phục vấn đề. @David – pam

0

Tôi đoán lý do là trình biên dịch Java hay JVM không đọc classpath như vụ.

Cài đặt môi trường thực sự khó khăn đối với người mới bắt đầu. Tôi sẽ khuyên bạn nên sử dụng Cloudera quickstart VM và Java IDE để giảm đau.

Tôi đã phải chịu đựng nhiều giờ và đã tổ chức trong bài viết này: http://www.yuchao.us/2017/05/hive-jdbc-in-cloudera-hadoop.html

Các vấn đề liên quan