2016-05-13 5 views
0

NoClassDefFoundErrorのように見えますが、これは簡単には解決できません。pyleusを使用する:NoClassDefFoundError:backtype/storm/topology/IRichBolt

私は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を使用しています。

+0

pyleusがStorm 1.0.1で動作するかどうかは誰にも分かりますか? – woot

+0

@JarrodRobersonこれをNoClassDefFoundErrorの非常に一般的な説明のdupとしてマークすることは、率直に言ってあなた自身の上でのオーバーリーチです。私の問題がなぜ掘り起こされていないのかという質問には、すぐに答えることはできません。 pyleusが新しいバージョンのStormをサポートしていないことは明らかではないので、他の人がこれにぶつかると確信しています。 – woot

+0

このエラーのすべてのインスタンスと同じ答え、このエラーに関するすべての質問について同じ答え、クラスパスに欠落しているクラスを置く*あなたの特定の状況にどう対応させるかは非常にローカライズされている*この例外が発生する理由や修正方法を変更しないでください。 –

答えて

0

私自身の質問にお答えします。私がgithub.comとjavadocsで見ているものに基づいて...私はpyleusが1.0.1をサポートしていないと信じています。 javadocsは、以前のリビジョンでIRichBoltがbacktype.storm.topologyにあったが、現在はorg.apache.storm.topologyに存在することを示しています。他に何が矛盾しているかは分かっています。

私は今のところ、Stormの古いバージョンを実行していると思います(0.9.4との互換性があるため、0.9.6でも動作します)。私は、0.10.0が処理されているオープンプルリクエストがあることを知りました。だから、1.0.1がサポートされるまでにはしばらく時間がかかるかもしれないと思います。

0

あなたが正しいと私は同様の問題を得たが、IRichBolt Error when running topology on storm-1.0.0 and pyleus-0.3.0 で報告、私は次のようにそれを修正しようとした:GitHubのからpyleusのソースコードを持って、で、EclipseにCOM \ Yelpの\ pyleusからポンポンファイルを含むすべてのファイルをインポートJavaファイルは、backtype.storm.topologyをorg.apache.storm.topologyに変更し、新しい* .classファイルをコンパイルし、解凍したpyleus_base.jarを置き換え、古い* .classファイルを新しくコンパイルされたEclipseファイルに置き換え、pyleus_base.jarそれはpyleusモジュールの中で、嵐のトポロジーを提出し、kafkaのpyleusモジュールの部分に関連して別のエラーが出ました。私は別のセットのkafkaの* .classファイルもpyleus_base.jarで見つけました。これも修正する必要があり、問題を解決するにはあまり必要がないようです。私はまだそれを修正していない。

+0

私はまだ試していないが、streamparseの最新の(出血している)バージョンが代わりに働くかもしれないようだ。 'pip install --pre streamparse == 3.0.0.dev3' – woot

+0

私は、ストーム1.0.1の作業でstreamparseを得ることができたと思っていました(しかし私はgithubからいくつかdiffを適用しなければならなかったまだ3.0.0.dev3にあります)。 – woot

関連する問題