我从如何使用风暴书中导入了示例
当我运行它时,我得到了
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>
最佳答案
您错误地使用了-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
作为入口点执行该项目。
关于java - 运行Maven的异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21841857/