Je suis en topologie de tempête « pyleus --verbose local xyz_topology.jar
» en utilisant storm-1.0.0, pyleus-0.3.0, centos-6.6
et obtenir l'erreurIRichBolt Erreur lors de la topologie en cours d'exécution sur la tempête et pyleus-1.0.0 0.3.0
Exception in thread "main" java.lang.NoClassDefFoundError: backtype/storm/topology/IRichBolt
Running: java -client -Ddaemon.name= -Dstorm.options= -Dstorm.home=/usr/local/apache-storm-1.0.0
-Dstorm.log.dir=/usr/local/apache-storm-1.0.0/logs -Djava.library.path=/usr/local/
lib:/opt/local/lib:/usr/lib -Dstorm.conf.file= -cp /usr/local/apache-storm-1.0.0/lib/asm-5.0.3.jar:
/usr/local/apache-storm-1.0.0/lib/clojure-1.7.0.jar:/usr/local/apache-storm-1.0.0/lib/disruptor-3.3.2.jar:
/usr/local/apache-storm-1.0.0/lib/kryo-3.0.3.jar:
/usr/local/apache-storm-1.0.0/lib/log4j-api-2.1.jar:/usr/local/apache-storm-1.0.0/lib/log4j-core-2.1.jar
:/usr/local/apache-storm-1.0.0/lib/log4j-over-slf4j-1.6.6.jar:
/usr/local/apache-storm-1.0.0/lib/log4j-slf4j-impl-2.1.jar:/usr/local/apache-storm-1.0.0/lib/minlog-1.3.0.jar:
/usr/local/apache-storm-1.0.0/lib/objenesis-2.1.jar:/usr/local/apache-storm-1.0.0/lib/reflectasm-1.10.1.jar:
/usr/local/apache-storm-1.0.0/lib/servlet-api-2.5.jar:/usr/local/apache-storm-1.0.0/lib/slf4j-api-1.7.7.jar:
/usr/local/apache-storm-1.0.0/lib/storm-core-1.0.0.jar:
/usr/local/apache-storm-1.0.0/lib/storm-rename-hack-1.0.0.jar:xyzTopology.jar:
/usr/local/storm/conf:/usr/local/apache-storm-1.0.0/bin
-Dstorm.jar=xyz_topology.jar com.yelp.pyleus.PyleusTopologyBuilder --local
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
pyleus local: error: [StormError] Storm command failed. Run with --verbose for more info.
La même topologie a bien fonctionné et sans aucune erreur lors de l'utilisation de l'ancienne version de storm-0.10.0 and pyleus-0.3.0
.
I regardé la tempête 0.10.0 et 1.0.0 orage documents et a constaté que dans la tempête-1.0.0
(a) la structure d'emballage a été modifié et
(b) la classe IRichBolt n'est pas présentée et à la place, il y a deux nouvelles classes - BaseStatefulBoltExecutor et BasicBoltExecutor - qui implémentent l'interface IRichBolt.
Il semble que la nouvelle version storm-1.0.0
ne peut pas fonctionner avec pyleus-0.3.0
comme c'était le cas avec l'ancienne version storm-0.10.0
.
Quelle serait la meilleure solution pour résoudre le problème et permettre d'exécuter la topologie sur storm-1.0.0
et pyleus-0.3.0
?
J'ai essayé de le fixer comme suit: a obtenu le code source de pyleus de GitHub, importé tous les fichiers, y compris le fichier pom de com \ yelp \ pyleus dans Eclipse, les fichiers java ont changé backtype.storm.topology en org.apache.storm.topology, compilé les nouveaux fichiers * .class, décompressé pyleus_base.jar, remplacé les anciens fichiers * .class par les nouveaux compilés dans Eclipse , retourné à pyleus_base.jar, placé dans le module pyleus, soumis une topologie de tempête et obtenu une autre erreur, liée à la partie de kafka du module pyleus. –