4

トピックの説明で述べたように、私は でKafka 0.8実行しようとしていScala 2.9.2ます。

0.8( https://cwiki.apache.org/KAFKA/kafka-08-quick-start.html )のクイック スタートを使用して動作するバージョンを取得できましたが、既定ではコンパイルさScala 2.8.0れています。

ステップを改造してみた

./sbt package 

./sbt "++2.9.2 package"

エラーなしでコンパイルされますが、開始時にメインクラスが見つからないと不平を言います。

/tmp/kafka-8-test/kafka[0.8]$ bin/kafka-server-start.sh onfig/server1.properties
Error: Could not find or load main class kafka.Kafka

どんな助けでも大歓迎です。

4

3 に答える 3

9

kafka-run-class.shScala2.8.0にハードコーディングされています。prenomenonで提案されているように、2.8.0から2.9.2に変更できます。

これは私のために働きます:

  • Linux | Unix

    sed -i "s/2.8.0/2.9.2/g" bin/kafka-run-class.sh

  • マックOS

    sed -i.bak "s/2.8.0/2.9.2/g" bin/kafka-run-class.sh

于 2013-02-07T07:36:03.240 に答える
4

問題は、bin/kafka-server-start.sh スクリプトが bin/kafka-run-class.sh を使用して、生成された jar ファイルを実行することです。

このスクリプトにはハードコーディングされたバージョンがあるため、次のようにカスタマイズする必要があります。

...
library=$(echo "$ivyPath/org.scala-lang/scala-library/jars/scala-library-2.9.2.jar")
CLASSPATH=$CLASSPATH:$library

compiler=~$(echo "$ivyPath/org.scala-lang/scala-compiler/jars/scala-compiler-2.9.2.jar")
CLASSPATH=$CLASSPATH:$compiler

log4j=$(echo "$ivyPath/log4j/log4j/jars/log4j-1.2.15.jar")
CLASSPATH=$CLASSPATH:$log4j

slf=$(echo "$ivyPath/org.slf4j/slf4j-api/jars/slf4j-api-1.6.4.jar")
CLASSPATH=$CLASSPATH:$slf

zookeeper=$(echo "$ivyPath/org.apache.zookeeper/zookeeper/jars/zookeeper-3.3.4.jar")
CLASSPATH=$CLASSPATH:$zookeeper

jopt=$(echo "$ivyPath/net.sf.jopt-simple/jopt-simple/jars/jopt-simple-3.2.jar")
CLASSPATH=$CLASSPATH:$jopt

for file in $base_dir/core/target/scala-2.9.2/*.jar;
do
  CLASSPATH=$CLASSPATH:$file
done

for file in $base_dir/core/lib/*.jar;
do
  CLASSPATH=$CLASSPATH:$file
done

for file in $base_dir/perf/target/scala-2.9.2/kafka*.jar;
do
  CLASSPATH=$CLASSPATH:$file
done
...
于 2013-02-06T17:47:10.783 に答える