alibaba / jstorm

Enterprise Stream Process Engine
http://jstorm.io
Apache License 2.0
3.92k stars 1.8k forks source link

在jstorm中使用Storm Sql Core依赖冲突的问题 #595

Open mrgiser opened 6 years ago

mrgiser commented 6 years ago

如题,项目需要在Jstorm中使用storm-sql-core包,而使用storm-sql-core时需要依赖原生的storm-core,如果同时引入JStorm-core、storm-core将会出错,是否不能同时依赖二者,这种情况,有没有解决办法?谢谢~ 以下报错还只是读取配置文件时的问题,后面坑可能更多??? Exception in thread "main" java.lang.ExceptionInInitializerError at backtype.storm.topology.BaseConfigurationDeclarer.(BaseConfigurationDeclarer.java:29) at backtype.storm.topology.TopologyBuilder$ConfigGetter.(TopologyBuilder.java:433) at backtype.storm.topology.TopologyBuilder$SpoutGetter.(TopologyBuilder.java:450) at backtype.storm.topology.TopologyBuilder.setSpout(TopologyBuilder.java:289) at com.ctg.itrdc.ruleengine.JsonTopology.main(JsonTopology.java:34) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147) Caused by: java.lang.RuntimeException: Invalid configuration defaults.yaml:Found multiple defaults.yaml resources. You're probably bundling the Storm jars with your topology jar. [jar:file:/E:/Program%20Files%20(x86)/apache-maven-3.3.1-bin/repos/repository/com/alibaba/jstorm/jstorm-core/2.2.1/jstorm-core-2.2.1.jar!/defaults.yaml, jar:file:/E:/Program%20Files%20(x86)/apache-maven-3.3.1-bin/repos/repository/org/apache/storm/storm-core/1.1.1/storm-core-1.1.1.jar!/defaults.yaml] at com.alibaba.jstorm.utils.LoadConf.findAndReadYaml(LoadConf.java:77) at backtype.storm.utils.Utils.readDefaultConfig(Utils.java:355) at backtype.storm.utils.Utils.readStormConfig(Utils.java:453) at backtype.storm.utils.Utils.(Utils.java:112) ... 10 more Caused by: java.io.IOException: Found multiple defaults.yaml resources. You're probably bundling the Storm jars with your topology jar. [jar:file:/E:/Program%20Files%20(x86)/apache-maven-3.3.1-bin/repos/repository/com/alibaba/jstorm/jstorm-core/2.2.1/jstorm-core-2.2.1.jar!/defaults.yaml, jar:file:/E:/Program%20Files%20(x86)/apache-maven-3.3.1-bin/repos/repository/org/apache/storm/storm-core/1.1.1/storm-core-1.1.1.jar!/defaults.yaml] at com.alibaba.jstorm.utils.LoadConf.getConfigFileInputStream(LoadConf.java:101) at com.alibaba.jstorm.utils.LoadConf.findAndReadYaml(LoadConf.java:55) ... 13 more

cycyyy commented 6 years ago

设置依赖的时候jstorm和storm的依赖应该都设置成provided

mrgiser commented 6 years ago

@cycyyy 谢谢,我是本地调试的,我都注释掉了provided,本地调试的时候应该怎么设置?

cycyyy commented 6 years ago

本地调试无解 本地调试会把所有jar都打进起来的 你可以调试的时候先把jstorm或者storm的依赖去掉一个

mrgiser commented 6 years ago

已解决,亲测正常运行。 本地调试时将storm-core-1.1.1.jar中的defaults.yaml删除,jstorm和storm的依赖应该都不要设置成provided,可以保证本地调试 集群模式,jstorm依赖为provided,storm依然保持不是provided,成功运行。 若storm-core设置为provided将会加载不了storm-core的类,而且web-ui中不会显示system.out.pringtln打印出的类加载失败的异常