当前位置: 首页 > 知识库问答 >
问题:

Twitter Storm的测试API不会初始化

祝嘉懿
2023-03-14

我在阅读这个问题的时候发现了backtype.storm.testing并感到很兴奋,但我一直无法使它工作,因为当我实际运行测试(从Java)时,测试类不会加载。

我想使用XuMingMing的TestingApiDemo中展示的测试函数,但当我实际运行测试时,我得到了一个ExceptionInInitializerError和一堆NoClassDefFoundErrors,因为它无法初始化BackType.Storm.Testing。

测试出了什么问题?在编译时没有问题。我的最佳猜测是它需要Clojure的一些东西,而Clojure在运行时被动态加载。还有人看到这个吗?

以下是相关堆栈跟踪的大部分内容:

java.lang.ExceptionInInitializerError: null
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:171)
        at backtype.storm.zookeeper$loading__4784__auto__.invoke(zookeeper.clj:1
)
        at backtype.storm.zookeeper__init.load(Unknown Source)
        at backtype.storm.zookeeper__init.<clinit>(Unknown Source)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:249)
        at clojure.lang.RT.loadClassForName(RT.java:2056)
        at clojure.lang.RT.load(RT.java:419)
        at clojure.lang.RT.load(RT.java:400)
        at clojure.core$load$fn__4890.invoke(core.clj:5415)
        at clojure.core$load.doInvoke(core.clj:5414)
        at clojure.lang.RestFn.invoke(RestFn.java:408)
        at clojure.core$load_one.invoke(core.clj:5227)
        at clojure.core$load_lib.doInvoke(core.clj:5264)
        at clojure.lang.RestFn.applyTo(RestFn.java:142)
        at clojure.core$apply.invoke(core.clj:603)
        at clojure.core$load_libs.doInvoke(core.clj:5302)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at clojure.core$apply.invoke(core.clj:603)
        at clojure.core$require.doInvoke(core.clj:5381)
        at clojure.lang.RestFn.invoke(RestFn.java:408)
        at backtype.storm.cluster$loading__4784__auto__.invoke(cluster.clj:1)
        at backtype.storm.cluster__init.load(Unknown Source)
        at backtype.storm.cluster__init.<clinit>(Unknown Source)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:249)
        at clojure.lang.RT.loadClassForName(RT.java:2056)
        at clojure.lang.RT.load(RT.java:419)
        at clojure.lang.RT.load(RT.java:400)
        at clojure.core$load$fn__4890.invoke(core.clj:5415)
        at clojure.core$load.doInvoke(core.clj:5414)
        at clojure.lang.RestFn.invoke(RestFn.java:408)
        at clojure.core$load_one.invoke(core.clj:5227)
        at clojure.core$load_lib.doInvoke(core.clj:5264)
        at clojure.lang.RestFn.applyTo(RestFn.java:142)
        at clojure.core$apply.invoke(core.clj:603)
        at clojure.core$load_libs.doInvoke(core.clj:5302)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at clojure.core$apply.invoke(core.clj:603)
        at clojure.core$require.doInvoke(core.clj:5381)
        at clojure.lang.RestFn.invoke(RestFn.java:408)
        at backtype.storm.daemon.nimbus__init.load(Unknown Source)
        at backtype.storm.daemon.nimbus__init.<clinit>(Unknown Source)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:249)
        at clojure.lang.RT.loadClassForName(RT.java:2056)
        at clojure.lang.RT.load(RT.java:419)
        at clojure.lang.RT.load(RT.java:400)
        at clojure.core$load$fn__4890.invoke(core.clj:5415)
        at clojure.core$load.doInvoke(core.clj:5414)
        at clojure.lang.RestFn.invoke(RestFn.java:408)
        at clojure.core$load_one.invoke(core.clj:5227)
        at clojure.core$load_lib.doInvoke(core.clj:5264)
        at clojure.lang.RestFn.applyTo(RestFn.java:142)
        at clojure.core$apply.invoke(core.clj:603)
        at clojure.core$load_libs.doInvoke(core.clj:5302)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at clojure.core$apply.invoke(core.clj:603)
        at clojure.core$require.doInvoke(core.clj:5381)
        at clojure.lang.RestFn.invoke(RestFn.java:408)
        at backtype.storm.testing$loading__4784__auto__.invoke(testing.clj:1)
        at backtype.storm.testing__init.load(Unknown Source)
        at backtype.storm.testing__init.<clinit>(Unknown Source)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:249)
        at clojure.lang.RT.loadClassForName(RT.java:2056)
        at clojure.lang.RT.load(RT.java:419)
        at clojure.lang.RT.load(RT.java:400)
        at clojure.core$load$fn__4890.invoke(core.clj:5415)
        at clojure.core$load.doInvoke(core.clj:5414)
        at clojure.lang.RestFn.invoke(RestFn.java:408)
        at clojure.core$load_one.invoke(core.clj:5227)
        at clojure.core$load_lib.doInvoke(core.clj:5264)
        at clojure.lang.RestFn.applyTo(RestFn.java:142)
        at clojure.core$apply.invoke(core.clj:603)
        at clojure.core$load_libs.doInvoke(core.clj:5302)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at clojure.core$apply.invoke(core.clj:605)
        at clojure.core$use.doInvoke(core.clj:5392)
        at clojure.lang.RestFn.invoke(RestFn.java:408)
        at backtype.storm.LocalCluster$loading__4784__auto__.invoke(LocalCluster
.clj:1)
        at backtype.storm.LocalCluster__init.load(Unknown Source)
        at backtype.storm.LocalCluster__init.<clinit>(Unknown Source)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:249)
        at clojure.lang.RT.loadClassForName(RT.java:2056)
        at clojure.lang.RT.load(RT.java:419)
        at clojure.lang.RT.load(RT.java:400)
        at clojure.core$load$fn__4890.invoke(core.clj:5415)
        at clojure.core$load.doInvoke(core.clj:5414)
        at clojure.lang.RestFn.invoke(RestFn.java:408)
        at clojure.lang.Var.invoke(Var.java:415)
        at backtype.storm.LocalCluster.<clinit>(Unknown Source)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:171)
        at backtype.storm.testing4j$loading__4784__auto__.invoke(testing4j.clj:1
)
        at backtype.storm.testing4j__init.load(Unknown Source)
        at backtype.storm.testing4j__init.<clinit>(Unknown Source)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:249)
        at clojure.lang.RT.loadClassForName(RT.java:2056)
        at clojure.lang.RT.load(RT.java:419)
        at clojure.lang.RT.load(RT.java:400)
        at clojure.core$load$fn__4890.invoke(core.clj:5415)
        at clojure.core$load.doInvoke(core.clj:5414)
        at clojure.lang.RestFn.invoke(RestFn.java:408)
        at clojure.lang.Var.invoke(Var.java:415)
        at backtype.storm.Testing.<clinit>(Unknown Source)
        at my.package.storm.bolts.MockTupleHelpers.testTuple(MockTupleHelpers.ja
va:69)

更新:我找到了我认为正在使用Clojure生成测试类的地方。也许我的项目(1.4)使用的Clojure库版本没有在这里提供一些必要的类型?我用的是Storm 0.8.2。

谢谢,

--丹尼尔

共有1个答案

范承望
2023-03-14

当您看到NoClassDefounderRors时,您可能在类路径中缺少了一些jar文件,或者由于缺少了一些依赖项,类没有初始化。检查哪些jar文件包含抛出noClassDefoundError的类,并将其添加到classpath中。

 类似资料:
  • 同步模式的读写测试,使用Simple Producer & Simple Consumer 备注: 1台客户机,8台Talos机器,8台Hdfs,8台HBase,Talos与Hdfs/HBase混布,机型均为2U; 读写同步,每个partition对应一个线程; ThroughPut指的是client出口/入口带宽; QPS是集群整体处理能力,非单台serverQPS 场景一:只写,batch=1

  • 我正在尝试执行以下操作: > 在mvn测试阶段将一些数据库脚本执行到hsqldb中 将该数据库用于测试目的 我能够配置maven,以便每次调用测试阶段时,所有脚本都成功执行,但是(当然有但是),我所有的测试都失败了。 我的配置: pom.xml 测试Spring配置: 输出: 但后来我所有的测试都失败了。我需要你的帮助,找出为什么它不起作用,并帮助我找到解决方案。非常感谢。 @安德鲁洛维诺夫 这是

  • 我使用的是Spring框架和hibernate,我在其中映射了@OneToMany,当我加载类别来创建新产品时,我得到一个错误:在hibernate中用映射惰性地初始化集合失败,我以前看到过一些说明,请删除FectType。懒惰和我这样做了,但仍然没有效果 类别JAVA Product.java 我在用JPA 这是控制器的代码 product-form.jsp 但我得到错误 "我不知道哪里错了,我

  • 我正在将我的应用程序的Spring引导版本更新到一个版本,以防我使用1.3.2版本,我现在正在迁移到1.4.3。所以我的Elasticsearch给出了以下错误。 配置 应用程序 聚甲醛

  • 我正在为一个从application.properties中获取值的组件编写测试。 在测试本身中,从application-test.properies中正确提取值。我使用了@testpropertysource(locations=“classpath:application-test.properties”) 然而,在测试的类中,这些值不会被拾取,并且是空值。 测试: 测试的组件: 如何使用a

  • 我有一个使用kotlin开发的spring-boot应用程序--总体来说一切都很顺利。(spring 1.5.6.发行版,kotlin 1.1.4-3) 我尝试过的一些addl方法:-确保我没有使用不推荐的TestRestTemplate-尝试使用setter注入而不是field注入,但这是浪费时间。-禁用kotlin编译器插件