Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
试图在Scala 2.9.2上构建和运行ApacheKafka 0.8,但没有成功_Scala_Apache Kafka - Fatal编程技术网

试图在Scala 2.9.2上构建和运行ApacheKafka 0.8,但没有成功

试图在Scala 2.9.2上构建和运行ApacheKafka 0.8,但没有成功,scala,apache-kafka,Scala,Apache Kafka,正如主题描述中所述,我正在尝试使用Scala 2.9.2运行Kafka 0.8 我能够使用0.8()的快速入门获得一个工作版本,但默认情况下它是根据scala2.8.0编译的 我试图修改步骤 ./sbt package 到 它编译时没有错误,但在启动过程中,它抱怨找不到主类 /tmp/kafka-8-test/kafka[0.8]$ bin/kafka-server-start.sh onfig/server1.properties Error: Could not find or load

正如主题描述中所述,我正在尝试使用Scala 2.9.2运行
Kafka 0.8

我能够使用
0.8
()的快速入门获得一个工作版本,但默认情况下它是根据
scala2.8.0
编译的

我试图修改步骤

./sbt 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

非常感谢您的帮助。

问题在于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
...

kafka run class.sh
硬编码为Scala 2.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

  • 马科斯

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


对于最新版本的卡夫卡0.8.1.1和gradlew,“SCALA_版本”是脚本中的一个变量

SCALA_版本=2.10.4

但是,在以下情况下,出现了一些问题:

``` ./gradlew-PscalaVersion=2.10.4罐

```

其中一个文件没有2.10.4部分,但只有2.10部分:


彼得_v@trusty64:~/data/kafka/kafka-0.8.1.1-src$find-名称'*.jar'
./perf/build/libs/kafka-perf_2.10-0.8.1.1.jar
./clients/build/libs/kafka-clients-0.8.1.1.jar
./system\u test/migration\u tool\u testsuite/0.7/lib/kafka-perf-0.7.0.jar
./system\u test/migration\u tool\u testsuite/0.7/lib/kafka-0.7.0.jar
./system\u test/migration\u tool\u testsuite/0.7/lib/zkclient-0.1.jar
./examples/build/libs/kafka-examples-0.8.1.1.jar
/core/build/libs/kafka#u 2.10-0.8.1.1.jar###############2.10而不是2.10.4?
./core/build/dependent-libs-2.10.4/snappy-java-1.0.5.jar
./core/build/dependent-libs-2.10.4/metrics-core-2.2.0.jar
./core/build/dependent-libs-2.10.4/zkclient-0.3.jar
./core/build/dependent-libs-2.10.4/log4j-1.2.15.jar
./core/build/dependent-libs-2.10.4/slf4j-api-1.7.2.jar
./core/build/dependent-libs-2.10.4/zookeeper-3.3.4.jar
./core/build/dependent-libs-2.10.4/jopt-simple-3.2.jar
./core/build/dependent-libs-2.10.4/scala-library-2.10.4.jar
./target/scala-2.10/kafka-0-8-1-1-src_2.10-0.1-SNAPSHOT.jar
./lib/apache-rat-0.8.jar
./contrib/hadoop consumer/lib/piggybank.jar
./contrib/hadoop consumer/build/libs/kafka-hadoop-consumer-0.8.1.1.jar
./contrib/hadoop producer/lib/piggybank.jar
./contrib/hadoop producer/build/libs/kafka-hadoop-producer-0.8.1.1.jar
./contrib/build/libs/contrib-0.8.1.1.jar
./gradle/wrapper/gradle-wrapper.jar

通过复制到2.10.4名称作为解决方法,卡夫卡正确启动

```

cp core/build/libs/kafka_2.10-0.8.1.1.jar core/build/libs/kafka_2.10.4-0.8.1.1.jar
```

要用Scala 2.9.2构建Kafka,我必须将Scala版本添加到每个构建命令中,比如
/sbt“++2.9.2更新”
/sbt“++2.9.2包”/sbt“++2.9.2 make pom”/code>/sbt“++2.9.2程序集包依赖项”
...
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
...