繁体   English   中英

HBase-Java中的java.lang.NoClassDefFoundError

[英]HBase - java.lang.NoClassDefFoundError in java

我只是想使用Java与Hbase互动

    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();
            }
        }
    }

上面是我的程序,我的TestHBase文件夹包含以下各项

hbase-0.94.6.1.3.0.0-0380.jar
TestHBase.class

我已经使用以下代码创建了jar

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

谁能帮我

谢谢

它是Hbase客户端Java程序,不应使用“ hadoop”运行它。 它应该是标准的jar程序运行风格,例如:java -jar yourjar .jar

当您使用“> jar -cvf TestHBase.jar -C TestHBase /时,”不会保证在运行时会遇到jar依赖项。

在eclipse中,jar导出功能可以选择“可运行” jar。

因此建议您单独运行测试类,并明确指出依赖的jar。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM