Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Apache Storm中未找到序列化类异常_Java_Apache Storm_Classnotfoundexception_Kryo - Fatal编程技术网

Java 在Apache Storm中未找到序列化类异常

Java 在Apache Storm中未找到序列化类异常,java,apache-storm,classnotfoundexception,kryo,Java,Apache Storm,Classnotfoundexception,Kryo,我有一个storm应用程序&其中有一个定制的POJO(警报)类。我已将该类添加到storm配置对象中。Alerts类正在实现java.io.Serailable接口&它还具有serialVersionUID conf.registerSerialization(Alerts.class); 但是在storm集群中执行时,我得到一个错误(ClassNotFoundException)。我清除了zookeeper和storm数据/缓存目录,但仍然发生此错误。我提取了jar并在构建jar之后检查了A

我有一个storm应用程序&其中有一个定制的POJO(警报)类。我已将该类添加到storm配置对象中。Alerts类正在实现
java.io.Serailable
接口&它还具有
serialVersionUID

conf.registerSerialization(Alerts.class);
但是在storm集群中执行时,我得到一个错误(
ClassNotFoundException
)。我清除了zookeeper和storm数据/缓存目录,但仍然发生此错误。我提取了jar并在构建jar之后检查了Alerts类&它就在jar中。如果你们能给我一些建议来解决这个问题,我会很有帮助的

Stacktrace:

2015-11-07T02:13:57.130+0530 b.s.d.worker [ERROR] Error on initialization of server mk-worker
java.lang.RuntimeException: java.lang.ClassNotFoundException: com.example.testing.storm.models.Alerts
    at backtype.storm.serialization.SerializationFactory.getKryo(SerializationFactory.java:100) ~[storm-core-0.9.4.jar:0.9.4]
    at backtype.storm.serialization.KryoValuesDeserializer.<init>(KryoValuesDeserializer.java:33) ~[storm-core-0.9.4.jar:0.9.4]
    at backtype.storm.serialization.KryoTupleDeserializer.<init>(KryoTupleDeserializer.java:39) ~[storm-core-0.9.4.jar:0.9.4]
    at backtype.storm.daemon.executor$mk_executor_data$fn__4559.invoke(executor.clj:214) ~[storm-core-0.9.4.jar:0.9.4]
    at backtype.storm.util$assoc_apply_self.invoke(util.clj:850) ~[storm-core-0.9.4.jar:0.9.4]
    at backtype.storm.daemon.executor$mk_executor_data.invoke(executor.clj:214) ~[storm-core-0.9.4.jar:0.9.4]
    at backtype.storm.daemon.executor$mk_executor.invoke(executor.clj:319) ~[storm-core-0.9.4.jar:0.9.4]
    at backtype.storm.daemon.worker$fn__5033$exec_fn__1754__auto____5034$iter__5039__5043$fn__5044.invoke(worker.clj:422) ~[storm-core-0.9.4.jar:0.9.4]
    at clojure.lang.LazySeq.sval(LazySeq.java:42) ~[clojure-1.5.1.jar:na]
    at clojure.lang.LazySeq.seq(LazySeq.java:60) ~[clojure-1.5.1.jar:na]
    at clojure.lang.RT.seq(RT.java:484) ~[clojure-1.5.1.jar:na]
    at clojure.core$seq.invoke(core.clj:133) ~[clojure-1.5.1.jar:na]
    at clojure.core$dorun.invoke(core.clj:2780) ~[clojure-1.5.1.jar:na]
    at clojure.core$doall.invoke(core.clj:2796) ~[clojure-1.5.1.jar:na]
    at backtype.storm.daemon.worker$fn__5033$exec_fn__1754__auto____5034.invoke(worker.clj:422) ~[storm-core-0.9.4.jar:0.9.4]
    at clojure.lang.AFn.applyToHelper(AFn.java:185) [clojure-1.5.1.jar:na]
    at clojure.lang.AFn.applyTo(AFn.java:151) [clojure-1.5.1.jar:na]
    at clojure.core$apply.invoke(core.clj:617) ~[clojure-1.5.1.jar:na]
    at backtype.storm.daemon.worker$fn__5033$mk_worker__5089.doInvoke(worker.clj:389) [storm-core-0.9.4.jar:0.9.4]
    at clojure.lang.RestFn.invoke(RestFn.java:512) [clojure-1.5.1.jar:na]
    at backtype.storm.daemon.worker$_main.invoke(worker.clj:500) [storm-core-0.9.4.jar:0.9.4]
    at clojure.lang.AFn.applyToHelper(AFn.java:172) [clojure-1.5.1.jar:na]
    at clojure.lang.AFn.applyTo(AFn.java:151) [clojure-1.5.1.jar:na]
    at backtype.storm.daemon.worker.main(Unknown Source) [storm-core-0.9.4.jar:0.9.4]
2015-11-07T02:13:57.130+0530 b.s.d.worker[错误]初始化服务器mk worker时出错
java.lang.RuntimeException:java.lang.ClassNotFoundException:com.example.testing.storm.models.Alerts
在backtype.storm.serialization.SerializationFactory.getKryo(SerializationFactory.java:100)~[storm-core-0.9.4.jar:0.9.4]
在backtype.storm.serialization.KryoValuesDeserializer.(KryoValuesDeserializer.java:33)~[storm-core-0.9.4.jar:0.9.4]
在backtype.storm.serialization.KryoTupleDeserializer.(KryoTupleDeserializer.java:39)~[storm-core-0.9.4.jar:0.9.4]
在backtype.storm.daemon.executor$mk\u executor\u data$fn\uu 4559.invoke(executor.clj:214)~[storm-core-0.9.4.jar:0.9.4]
在backtype.storm.util$assoc\u apply\u self.invoke(util.clj:850)~[storm-core-0.9.4.jar:0.9.4]
在backtype.storm.daemon.executor$mk_executor_data.invoke(executor.clj:214)~[storm-core-0.9.4.jar:0.9.4]
在backtype.storm.daemon.executor$mk_executor.invoke(executor.clj:319)~[storm-core-0.9.4.jar:0.9.4]
在backtype.storm.daemon.worker$fn\uuuu5033$exec\u fn\uuuu1754\uuuuuuuuuuuu5034$iter\uuuuuu5039\uuuuuuuu5043$fn\uuu5044.invoke(worker.clj:422)~[storm-core-0.9.4.jar:0.9.4]
在clojure.lang.LazySeq.sval(LazySeq.java:42)~[clojure-1.5.1.jar:na]
在clojure.lang.LazySeq.seq(LazySeq.java:60)~[clojure-1.5.1.jar:na]
在clojure.lang.RT.seq(RT.java:484)~[clojure-1.5.1.jar:na]
在clojure.core$seq.invoke(core.clj:133)~[clojure-1.5.1.jar:na]
在clojure.core$dorun.invoke(core.clj:2780)~[clojure-1.5.1.jar:na]
在clojure.core$doall.invoke(core.clj:2796)~[clojure-1.5.1.jar:na]
在backtype.storm.daemon.worker$fn\uuuu 5033$exec\u fn\uuuu 1754\uuuu auto\uuuuuuuuu 5034.invoke(worker.clj:422)~[storm-core-0.9.4.jar:0.9.4]
在clojure.lang.AFn.applyToHelper(AFn.java:185)[clojure-1.5.1.jar:na]
在clojure.lang.AFn.applyTo(AFn.java:151)[clojure-1.5.1.jar:na]
在clojure.core$apply.invoke(core.clj:617)~[clojure-1.5.1.jar:na]
在backtype.storm.daemon.worker$fn__5033$mk_worker__5089.doInvoke(worker.clj:389)[storm-core-0.9.4.jar:0.9.4]
在clojure.lang.RestFn.invoke(RestFn.java:512)[clojure-1.5.1.jar:na]
在backtype.storm.daemon.worker$\u main.invoke(worker.clj:500)[storm-core-0.9.4.jar:0.9.4]
在clojure.lang.AFn.applyToHelper(AFn.java:172)[clojure-1.5.1.jar:na]
在clojure.lang.AFn.applyTo(AFn.java:151)[clojure-1.5.1.jar:na]
在backtype.storm.daemon.worker.main(未知源)[storm-core-0.9.4.jar:0.9.4]

您的设置听起来非常正确。。。您可以发布拓扑提交代码吗?请再次验证,您提交的jar是否包含您的
Alert.class
(也在包结构的正确文件夹中)。您也可以尝试不注册
Alert.class
(作为一种健全性检查)。如果没有注册,Storm应该使用Java默认序列化——如果这样做有效,我想这是一个Kryo问题。我解决了这个问题,问题是我以root用户身份运行supervisor/nimbus&以另一个用户身份访问nimbus。将nimbus/supervisor更改为其他用户解决了此问题。