Apache storm 风暴拉进陈旧的依赖

Apache storm 风暴拉进陈旧的依赖,apache-storm,Apache Storm,我们正在尝试从Storm 0.10.0升级到1.0.2,我们的项目使用 在版本之间,storm社区将backtype.storm包名更改为org.apache.storm包名 作为我们自己升级的一部分,我们不得不将暴风卡夫卡的版本也改为1.0.2 但是,当我在storm上运行拓扑时,我得到了关于旧版本中缺少类的错误: apache-storm-1.0.2/bin/storm \ jar \ $jarFile \ org.apache.storm.flux.Flux \ $yamlFile \

我们正在尝试从Storm 0.10.0升级到1.0.2,我们的项目使用

在版本之间,storm社区将
backtype.storm
包名更改为
org.apache.storm
包名

作为我们自己升级的一部分,我们不得不将暴风卡夫卡的版本也改为1.0.2

但是,当我在storm上运行拓扑时,我得到了关于旧版本中缺少类的错误:

apache-storm-1.0.2/bin/storm \
 jar \
$jarFile \
org.apache.storm.flux.Flux \
$yamlFile \
--remote



+-         Apache Storm        -+
+-  data FLow User eXperience  -+
Version: 1.0.2
Parsing file: topology-config.yaml
333  [main] INFO  o.a.s.f.p.FluxParser - loading YAML from input stream...
335  [main] INFO  o.a.s.f.p.FluxParser - Not performing property substitution.
335  [main] INFO  o.a.s.f.p.FluxParser - Not performing environment variable substitution.
Exception in thread "main" java.lang.NoClassDefFoundError: backtype/storm/spout/MultiScheme
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:264)
    at org.apache.storm.flux.FluxBuilder.buildObject(FluxBuilder.java:291)
    at org.apache.storm.flux.FluxBuilder.buildComponents(FluxBuilder.java:350)
    at org.apache.storm.flux.FluxBuilder.buildTopology(FluxBuilder.java:75)
    at org.apache.storm.flux.Flux.runCli(Flux.java:153)
    at org.apache.storm.flux.Flux.main(Flux.java:98)
Caused by: java.lang.ClassNotFoundException: backtype.storm.spout.MultiScheme
    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
我不确定backtype是从哪里来的。storm正在潜入我的代码库

我已经在代码库(以及
mvn依赖项:tree
)中查找了
0.10.0
backtype.storm
,但是这些旧版本的东西找不到

我甚至从我的子依赖项中排除了所有的
storm kafka
版本,然后在
storm kafka
上添加了一个显式依赖项,但它没有改变任何事情

Maven似乎没有错,因为我在我的
~/.m2/存储库中没有看到任何
0.10*
版本:

ls ~/.m2/repository/org/apache/storm/*
~/.m2/repository/org/apache/storm/flux:
1.0.2

~/.m2/repository/org/apache/storm/flux-core:
1.0.2

~/.m2/repository/org/apache/storm/storm:
1.0.2

~/.m2/repository/org/apache/storm/storm-kafka:
1.0.2

显然,storm在这里做错了什么。

检查您的
拓扑配置.yaml
,从yaml文件中选择类名后,将动态加载类。

检查您的
拓扑配置.yaml
,类在从yaml文件中选取类名后动态加载。

因此问题是因为在代码中使用着色jar文件作为依赖项。 其中一个着色jar文件使用了较旧版本的storm依赖项,但在
mvn dependency:tree

从着色jar依赖项中排除storm依赖项后,上述错误消失了


TL;DR:我实际分解了最终的jar文件(使用
jar-xvf final.jar
),在
backtype/storm
org/apache/storm
包中看到了重复的类,
backtype/storm
中的类可能是因为
backtype
org
之前出现的?(在这个问题上不确定,因为我希望在这种情况下包名优先)。

所以问题是因为在我们的代码中使用着色jar文件作为依赖项。 其中一个着色jar文件使用了较旧版本的storm依赖项,但在
mvn dependency:tree

从着色jar依赖项中排除storm依赖项后,上述错误消失了


TL;DR:我实际分解了最终的jar文件(使用
jar-xvf final.jar
),在
backtype/storm
org/apache/storm
包中看到了重复的类,
backtype/storm
中的类可能是因为
backtype
org
之前出现的?(这个不确定,因为我希望在这种情况下包名优先)。

我在所有代码中搜索了
backtype.storm
,也在
topology config.yaml
文件中搜索了
。任何地方都没有
bactype.storm
。我已经在所有代码中搜索了
backtype.storm
,也在
topology config.yaml
文件中进行了显式搜索。任何地方都没有
bactype.storm