在尝试学习如何使用风暴。我决定编译我自己的著名wordcount拓扑示例,看看它是如何实现的。代码与示例完全相同(https://github.com/apache/storm/blob/master/examples/storm-starter/src/jvm/org/apache/storm/starter/wordcounttopology.java)
但是,每当我尝试运行jar时,我都会得到一个错误,即找不到或无法加载主类。我可以运行与storm捆绑在一起的默认示例jar,没有任何问题(如在bellow中),因此它不应该是调用语法问题。
bin/storm jar lib/"name".jar "classpath"
maven创建jar没有任何问题,最初我假设我没有在pom文件中正确地排除storm依赖,但应该是这样的,对吗?
<dependencies>
<dependency>
<groupId>org.apache.storm</groupId>
<artifactId>storm-core</artifactId>
<version>1.0.2</version>
<scope>provided</scope>
</dependency>
</dependencies>
这也许是一个模糊的问题,但老实说,由于代码是相同的,所以不确定在哪里解决它,所以生成一个成功的jar不应该是一个问题,对吧?
2条答案
按热度按时间tpgth1q71#
storm jar
需要两个参数;第一个:jar;第二个:要运行的主类的完整限定名。如果要排除storm依赖项,则错误应该不同;虽然
pom.xml
比你所拥有的更复杂。看看这个答案。有时,必须指定jar的完整路径。
总而言之:
w1jd8yoj2#
首先,删除
<scope>provided</scope>
从你的依赖中解脱出来。其次,这里需要的是一个可执行jar。默认情况下,maven不生成可执行jar。因此,在构建jar时,必须指定main类。这可以使用maven汇编插件来完成
这将产生一个可执行jar。