0

だから、私はこのコマンドを実行しようとしていました:

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

./storm/starter/ で ExclamationTopology クラスを実行しましたが、うまくいきませんでした。

次に、SOの誰かがコマンドを次のように変更するように提案しました:

java -cp ./target/storm-starter-0.0.1-SNAPSHOT-jar-with-dependencies.jar:/Users/xxx/storm-0.8.2/storm-0.8.2.jar:/Users/xxx/storm-0.8.2/lib/*:/Users/xxx/storm-0.8.2/conf/s torm.yaml storm.starter.ExclamationTopology

そしてそれはうまくいきました。これらのパスをパス変数に追加するだけで済むと思ったので、パスを変更したところ、次のようになりました。

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/Users/xxx/storm-0.8.2/storm-0.8.2.jar:/Users/xxx/storm-0.8.2/lib/*:/Users/xxx/storm-0.8.2/conf/s​torm.yaml

しかし、まだ最初のコマンドを実行できません。理由を教えてください。私が基本的に望んでいるのは、最初のコマンドを実行することです。どういうわけか正しいパスセットが必要ですよね?私はそれがまさに私がやったことだと信じています。

編集:

これは、最初のコマンドで返されるエラーです。

$ java -cp ./target/storm-starter-0.0.1-SNAPSHOT-jar-with-dependencies.jar storm.starter.ExclamationTopology
Exception in thread "main" java.lang.NoClassDefFoundError: backtype/storm/topology/IRichSpout
Caused by: java.lang.ClassNotFoundException: backtype.storm.topology.IRichSpout
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
4

1 に答える 1

1

ストームの依存関係をクラスパスに追加する必要があります。m2-pom.xml で「提供」とマークされているため、現在含まれていません。「コンパイル」に変更します。

<dependency>
<groupId>storm</groupId>
<artifactId>storm</artifactId>
<version>0.8.2</version>
<scope>compile</scope>
</dependency>
于 2013-10-18T16:24:19.313 に答える