执行KafkaSink时报NoClassDefFoundError

编译在bootcamp里的KafkaSink.java后,java -cp时报如下错误:
{{{Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/flume/conf/Configurable
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
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 sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
Caused by: java.lang.ClassNotFoundException: org.apache.flume.conf.Configurable
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)}}}**我使用的是apache-flume-1.6.0,也参考了**http://wenda.chinahadoop.cn/question/2298?q=noclassdef  并没有解决问题。
这是pom.xml
{{{
maven-assembly-plugin


package

single





jar-with-dependencies







org.apache.kafka
kafka_2.10
0.8.2.0



org.apache.flume
flume-ng-core
1.6.0

}}}并且我也声明了CLASSPATH=$FLUME_HOME/lib  ,要怎么解决呢?
已邀请:
java -cp 后面的命令打全了
还有pom.xml内容贴出来
参考下bootcamp/kafka-tutorial/test_kafka/pom.xml内容,把没有的补上。

fish - Hadooper

执行时使用的命令是什么?

fish - Hadooper

可以用已有知识自行回答这个问题:
执行的命令如果是“java -cp test_flume-0.0.1-SNAPSHOT.jar cn.chinahadoop.flume.KafkaSink”,则表示,你需要执行一个java进程,让java虚拟机从 test_flume-0.0.1-SNAPSHOT.jar 这个包中获取所需要的class文件。
 
这个jar包,只包含了你所编译出来的那些文件,并不包括你需要依赖的其它类比如flume以及kafka中的,所以这样执行会出现classnotfound的问题。
 
你是否是训练营的学员?在《flume入门使用》ppt中对于执行方法有详细的描述:
我们可以采用的方法是,将自己编译出来的这个jar包,配置到flume的plugin中,然后使用flume-ng agent命令执行任务。

要回复问题请先登录注册