gpt4 book ai didi

java - HBase - Java 中的 java.lang.NoClassDefFoundError

转载 作者:可可西里 更新时间:2023-11-01 14:54:20 26 4
gpt4 key购买 nike

我只是想用 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/ .

我已经使用下面的代码运行了我的 jar

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 你的jar.jar

当您使用“>jar -cvf TestHBase.jar -C TestHBase/.”时,它不保证在您面对的运行时可以找到 jar 依赖项。

在eclipse中,jar导出功能有“Runable”jar的选择。

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

关于java - HBase - Java 中的 java.lang.NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20425219/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com