我从如何使用风暴书导入了例子
当我运行它时,我得到了这个
INFO] An exception occured while executing the Java class. null 0
我在终端
中使用了这个命令mvn -f pom.xml compile exec:java -Dstorm.topology=TopologyMain
代码:
import spouts.WordReader;
import backtype.storm.Config;
import backtype.storm.LocalCluster;
import backtype.storm.topology.TopologyBuilder;
import backtype.storm.tuple.Fields;
import bolts.WordCounter; import bolts.WordNormalizer;
public class TopologyMain {
public static void main(String[] args) throws InterruptedException {
//Topology definition
TopologyBuilder builder = new TopologyBuilder();
builder.setSpout("word-reader",new WordReader());
builder.setBolt("word-normalizer", new WordNormalizer()) .shuffleGrouping("word-reader");
builder.setBolt("word-counter", new WordCounter(),1) .fieldsGrouping("word-normalizer", new Fields("word"));
//Configuration
Config conf = new Config(); conf.put("wordsFile", args[0]); conf.setDebug(false);
//Topology run
conf.put(Config.TOPOLOGY_MAX_SPOUT_PENDING, 1);
LocalCluster cluster = new LocalCluster(); cluster.submitTopology("Getting-Started-Toplogie", conf, builder.createTopology());
Thread.sleep(1000);
cluster.shutdown();
}
}
我也试过这个:
mvn -f pom.xml clean install
然后尝试使用此
mvn exec:java -Dexec.mainClass="TopologyMain" -Dexec.args="src/main/resources/words.txt"
错误
[0] Inside the definition for plugin 'exec-maven-plugin' specify the following:
<configuration> ... <mainClass>VALUE</mainClass></configuration>
答案 0 :(得分:2)
您错误地使用了-D参数。它应该是:
mvn -f pom.xml compile exec:java -Dexec.mainClass=storm.topology.TopologyMain
这将指定要执行的主类。它应与package storm.topology
一起打包,这在您粘贴的代码中并不明显。
另外,我不知道你为什么要明确指定你的POM文件。您应该在项目的根目录中创建一个pom.xml文件,然后您不必在命令行中指定它。理想情况下,你应该打字,
mvn clean install
mvn exec:java -Dexec.mainClass="storm.topology.TopologyMain"
这将清理项目,编译它,安装任何依赖项,然后以TopologyMain
作为入口点来执行项目。