2014-02-26 51 views
3

我正在使用storm jar類將拓撲提交到`nimbus'。它在本地工作正常,但在遠程集羣上它說它無法加載主類。下面是運行Storm Topology時找不到主類

stderr: SLF4J: Class path contains multiple SLF4J bindings. 
SLF4J: Found binding in [jar:file:/usr/local/storm-0.9.0.1/lib/logback-classic-1.0.6.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
SLF4J: Found binding in [jar:file:/tmp/storm-starter.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. 
Error: Could not find or load main class ExclamationTopology 

我在CLI運行以下命令的錯誤:

usr/local/storm/bin/storm jar /tmp/storm-starter.jar ExclamationTopology 

回答

-3

嘗試運行這樣的:

java -jar /tmp/storm-starter.jar ExclamationTopology 

來到這裏的答案:Run Jar in Console

+3

錯錯錯!你回答與Storm – Chiron

+1

無關,實際上它是'暴風雨 - starter.jar storm.starter.ExclamationTopology測試',其中test是拓撲名稱 – Volatil3

2

有有可能是storm-starter.jar的包裝問題:這個jar不應該包含sl4j的實現。爲了封裝風暴起動示例(https://github.com/nathanmarz/storm-starter),運行從根文件夾下面的命令(其中M2-pom.xml的存在):

mvn -f m2-pom.xml package 

這應該在目標/文件夾產生這個文件:

storm-starter-0.0.1-SNAPSHOT-jar-with-dependencies.jar 

然後,爲了將它部署到集羣(事實上,通過雨雲),你需要告訴給storm jar命令包含提供拓撲定義main()類的全名,像這樣(確保你使用「-with-dependencies」):

usr/local/storm/bin/storm jar storm-starter-0.0.1-SNAPSHOT-jar-with-dependencies.jar storm.starter.ExclamationTopology 
+0

是。我在IntelliJ-IDE中添加了額外的庫。 – Volatil3

0

我有類似的風暴錯誤,&它通過添加在pom.xml中提供了修復。當你添加提供時,maven不會將這些庫綁定到jar中。

3

對我來說,這是一個類路徑問題。一旦我遍歷到jar所在的目錄,並運行命令,一切正常。

從風暴的主文件夾運行

./bin/storm jar examples/storm-starter/storm-starter-topologies-0.9.3.jar storm.starter.WordCountTopology TOne 

Failed with error: Error: Could not find or load main class storm.starter.WordCountTopology 

Running from directory examples/storm-starter 

/root/storm/apache-storm-0.10.0/bin/storm jar storm-starter-topologies-0.10.0.jar storm.starter.WordCountTopology TOne 

工作的罰款。

+0

是的,'風暴'和罐子必須是完整的路徑... – FaithReaper