[HADOOP] HBase - java의 java.lang.NoClassDefFoundError
HADOOPHBase - java의 java.lang.NoClassDefFoundError
그냥 Java를 사용하여 Hbase와 상호 작용하려는 Im
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.*;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.*;
import org.apache.hadoop.hbase.HBaseConfiguration;
public class TestHBase {
public static void main(String[] args) throws Exception {
Configuration conf = HBaseConfiguration.create();
HBaseAdmin admin = new HBaseAdmin(conf);
try {
HTable table = new HTable(conf, "test-table");
Put put = new Put(Bytes.toBytes("test-key"));
put.add(Bytes.toBytes("cf"), Bytes.toBytes("q"), Bytes.toBytes("value"));
table.put(put);
} finally {
admin.close();
}
}
}
위는 내 프로그램이고 My TestHBase 폴더에는 다음 항목이 포함되어 있습니다.
hbase-0.94.6.1.3.0.0-0380.jar
TestHBase.class
그리고 난 다음 코드를 사용하여 항아리를 만들었습니다.
java>jar -cvf TestHBase.jar -C TestHBase/ .
그리고 다음 코드를 사용하여 항아리를 실행했습니다.
Hadoop> Hadoop jar C:\java\bin\TestHBase.jar com.bgt.TestHBase
하지만 다음 오류가 발생했습니다.
C:\HDP>hadoop jar C:\java\jdk1.6.0_31\bin\zip.jar com.bgt.TestHBase
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hba
se/HBaseConfiguration
at com.bgt.TestHBase.main(TestHBase.java:12)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.util.RunJar.main(RunJar.java:160)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hbase.HBaseConfig
uration
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
... 6 more
아무도 나를 도울 수 있습니까?
감사
해결법
-
==============================
1.Hbase 클라이언트 Java 프로그램이므로 "hadoop"을 사용하여 실행하면 안됩니다. 그것은 표준 항아리 프로그램 실행 스타일이어야합니다 : java -jar yourjar.jar
Hbase 클라이언트 Java 프로그램이므로 "hadoop"을 사용하여 실행하면 안됩니다. 그것은 표준 항아리 프로그램 실행 스타일이어야합니다 : java -jar yourjar.jar
"> jar -cvf Test HBase.jar -C TestBase /."를 사용하면, 런타임시 jar 종속성을 찾을 수 있다고 보장하지 않습니다.
이클립스에서 jar 내보내기 함수는 "Runnable"jar를 선택할 수 있습니다.
따라서 종속 항아리를 명시 적으로 지적하여 테스트 클래스를 실행하는 것이 좋습니다.
from https://stackoverflow.com/questions/20425219/hbase-java-lang-noclassdeffounderror-in-java by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 파이썬 pyhs2를 사용하여 하이브에 연결하는 방법은 무엇입니까? (0) | 2019.06.30 |
---|---|
[HADOOP] Hadoop : 감속기의 수가 프로그램에서 설정 한 것과 같지 않습니다. (0) | 2019.06.30 |
[HADOOP] cosmos.lab.fi-ware.org의 SafeModeException (0) | 2019.06.29 |
[HADOOP] 특정 주어진 파일을 HDFS에 저장하기 위해 명시 적으로 datanode를 정의하는 방법은 무엇입니까? (0) | 2019.06.29 |
[HADOOP] 파일에서 직접 마루 테이블을로드 할 수 있습니까? (0) | 2019.06.29 |