【发布时间】:2016-06-05 03:20:37
【问题描述】:
似乎NoClassDefFoundError 很容易解决,但我似乎无法弄清楚这一点。
我在 word_count example 上使用 pyleus。我可以使用:
pyleaus build word_count/pyleus_topology.yaml
然后我尝试在本地运行(或者即使我尝试提交,我也会遇到同样的错误):
pyleus local --debug word_count.jar
Running: /mypath/jre/bin/java -client -Ddaemon.name= -Dstorm.options= -Dstorm.home=/mypath/storm -Dstorm.log.dir=/mypath/storm/logs -Djava.library.path=/mypath/jre/lib/ -Dstorm.conf.file= -cp /mypath/storm/lib/storm-core-1.0.1.jar:/mypath/storm/lib/asm-5.0.3.jar:/mypath/storm/lib/log4j-over-slf4j-1.6.6.jar:/mypath/storm/lib/log4j-slf4j-impl-2.1.jar:/mypath/storm/lib/log4j-core-2.1.jar:/mypath/storm/lib/kryo-3.0.3.jar:/mypath/storm/lib/storm-rename-hack-1.0.1.jar:/mypath/storm/lib/objenesis-2.1.jar:/mypath/storm/lib/reflectasm-1.10.1.jar:/mypath/storm/lib/log4j-api-2.1.jar:/mypath/storm/lib/minlog-1.3.0.jar:/mypath/storm/lib/slf4j-api-1.7.7.jar:/mypath/storm/lib/clojure-1.7.0.jar:/mypath/storm/lib/servlet-api-2.5.jar:/mypath/storm/lib/disruptor-3.3.2.jar:word_count.jar:/mypath/storm/conf:/mypath/storm/bin -Dstorm.jar=word_count.jar com.yelp.pyleus.PyleusTopologyBuilder --local --debug
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: backtype/storm/topology/IRichBolt
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
at java.lang.Class.getMethod0(Class.java:3018)
at java.lang.Class.getMethod(Class.java:1784)
at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)
Caused by: java.lang.ClassNotFoundException: backtype.storm.topology.IRichBolt
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)
... 7 more
这里让我感到困惑的是,如果您滚动查看我的错误日志,看起来所有的 Storm 库都包含在类路径中。我在这里想念什么?我正在使用 Storm 1.0.1、pyleus 0.3.0、Java 1.8、Python 2.7。
【问题讨论】:
-
有谁知道 pyleus 是否适用于 Storm 1.0.1?
-
@JarrodRoberson 将其标记为对 NoClassDefFoundError 是什么的非常笼统的解释的重复,坦率地说,这对您来说是一个过度。没有一个答案能很好地快速回答这个问题,即为什么我的问题在没有大量挖掘的情况下就存在。我相信其他人会遇到这种情况,因为 pyleus 不支持较新版本的 Storm 并不明显。
-
该错误的每个实例的相同原因以及有关此错误的每个问题的相同答案,将缺少的类放在类路径中,如何针对您的特定情况执行此操作非常本地化,什么版本无关紧要,不会改变这个异常发生的原因或如何修复它。
-
@JarrodRoberson 当这不是一个真正的 java 编程问题(即使它是一个 java 错误)时,我标记这个 java 的错误。我认为 python 开发人员没有理由必须学习 Java 的来龙去脉并追踪这个问题,而且我相信其他人会碰到它。
标签: python apache-storm pyleus