运行maven中的例外情况

时间:2014-02-18 00:09:10

标签: java maven apache-storm

我从如何使用风暴书导入了例子

当我运行它时,我得到了这个

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>

1 个答案:

答案 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作为入口点来执行项目。