为什么我不能使用此命令从storm-starter运行示例?

时间:2013-06-03 18:17:05

标签: maven maven-2 apache-storm

我之前没有使用过Storm或Maven的经验,而且我正在研究我的初学者项目。当我使用给出的命令编译上传到git网站上的入门项目时,即:

mvn compile exec:java -Dexec.classpathScope=compile -Dexec.mainClass=storm.starter.ExclamationTopology

我可以运行Exclamation拓扑类,但是当我使用此命令时:

java -cp ./target/storm-starter-0.0.1-SNAPSHOT-jar-with-dependencies.jar storm.starter.ExclamationTopology

我无法运行它。

顺便说一句,我从apache网站上的maven教程中得到了第二个命令 有人能指出我在这里做错了什么吗?

PS:这是错误http://pastebin.com/A1PQbB3r

3 个答案:

答案 0 :(得分:2)

您正在访问java.lang.NoClassDefFoundError,因为风暴jar不在您的类路径中。对于你的第二个命令,将风暴jar和storm / lib放在你的类路径中,它应该按预期工作。

答案 1 :(得分:1)

你的pom可能有风暴依赖的范围为“提供”,这意味着它将在运行时类路径中,但不在jar-with-dependencies中。尝试将范围更改为“编译”

答案 2 :(得分:0)

Storm依赖的范围应该不同,具体取决于您是以本地模式还是群集运行。

对于本地模式,您需要将范围设置为“编译”或将标记保留为空,因为范围默认为“编译”。

为了将拓扑提交到集群,您需要将范围设置为“已提供”,否则Storm jar将打包在拓扑jar中,当部署到集群时,类路径中将有2个Storm jar:拓扑中的一个和Storm安装目录中的一个。