2016-10-28 6 views
0

嵐の使用方法を学びながら。私はよく知られているWordCountトポロジの自分のインスタンスをコンパイルして、それがどのように行われているかを確認することにしました。コードは、例のコードと100%同一です。 (https://github.com/apache/storm/blob/master/examples/storm-starter/src/jvm/org/apache/storm/starter/WordCountTopology.java嵐は私自身の瓶のjarクラスのパスを見つけることができません

しかし、私がジャーを実行しようとすると、私はメインクラスを見つけたりロードできなかったというエラーが表示されます。 stormにバンドルされているデフォルトのサンプルjarを問題なく実行できます(呼び出し文法の問題ではありません)。

bin/storm jar lib/"name".jar "classpath" 

Mavenは、問題なくjarファイルを作成し、最初は私がポンポンファイルで正しく嵐依存性を除外していなかったが、それは右、このようにする必要がありますと仮定しましたか?

<dependencies> 
    <dependency> 
     <groupId>org.apache.storm</groupId> 
     <artifactId>storm-core</artifactId> 
     <version>1.0.2</version> 
     <scope>provided</scope> 
    </dependency> 
</dependencies> 

これはおそらく、漠然とした質問ですが、コードが同じなので、成功したjarファイルを生成することは右、問題にはなりませんので、それをどこに取り組むためにわからない正直に言うと?

答えて

0

まず、依存関係から<scope>provided</scope>を削除してください。
第2に、ここで必要なものは実行可能なjarです。デフォルトでは、mavenは実行可能なjarを生成しません。だから、あなたがあなたの瓶を作るときは、メインクラスを指定しなければなりません。 これは、実行可能jarファイルを生成するMaven Assembly Plugin

<project> 
    [...] 
    <build> 
    [...] 
    <plugins> 
     <plugin> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <version>2.6</version> 
     <configuration> 
      [...] 
      <archive> 
      <manifest> 
       <mainClass>org.sample.App</mainClass>  // specify your main class here. 
      </manifest> 
      </archive> 
     </configuration> 
     [...] 
     </plugin> 
     [...] 
</project> 

を用いて行うことができます。

+0

あなたが言ったように私がやったが、私はまだ同じエラーを取得します。私はManifest.mfファイルを開いていましたが、今はメインクラスのパスを持っていますが、これまでにないものでした。 – user697110

0
  1. storm jarには2つのパラメータが必要です。最初のもの:瓶。 2番目のクラス:実行するメインクラスの完全修飾名。
  2. 嵐の依存関係を除外する場合は、エラーが異なる必要があります。 pom.xmlはあなたの持っているものより複雑です。 this answerを参照してください。
  3. 場合によっては、jarへのフルパスを指定する必要があります。要約すると

storm jar /full/path/to/your/jar com.foo.bar.MainClass 
関連する問題