【问题标题】:Trying to build and run Apache Kafka 0.8 against Scala 2.9.2 without success尝试针对 Scala 2.9.2 构建和运行 Apache Kafka 0.8 但没有成功
【发布时间】:2013-01-22 00:32:39
【问题描述】:

如主题描述中所述,我正在尝试让Kafka 0.8Scala 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

我们将不胜感激。

【问题讨论】:

    标签: scala apache-kafka


    【解决方案1】:

    问题是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
    ...
    

    【讨论】:

      【解决方案2】:

      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

      • MacOS

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

      【讨论】:

      • 要使用 Scala 2.9.2 构建 Kafka,我必须将 scala 版本添加到每个构建命令中,例如 ./sbt "++2.9.2 update" ./sbt "++2.9.2 package" ./sbt "++2.9.2 make-pom" ./sbt "++2.9.2 assembly-package-dependency"
      【解决方案3】:

      在最新版本的 Kafka 0.8.1.1 和 gradlew 中,“SCALA_VERSION”是脚本中的一个变量。

      SCALA_VERSION=2.10.4

      但是,之后某处出现了问题:

      ``` ./gradlew -PscalaVersion=2.10.4 罐子

      ```

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

      peter_v@trusty64:~/data/kafka/kafka-0.8.1.1-src$ find . -name '*.jar' ./perf/build/libs/kafka-perf_2.10-0.8.1.1.jar ./clients/build/libs/kafka-clients-0.8.1.1.jar ./system_test/migration_tool_testsuite/0.7/lib/kafka-perf-0.7.0.jar ./system_test/migration_tool_testsuite/0.7/lib/kafka-0.7.0.jar ./system_test/migration_tool_testsuite/0.7/lib/zkclient-0.1.jar ./examples/build/libs/kafka-examples-0.8.1.1.jar ./core/build/libs/kafka_2.10-0.8.1.1.jar ############ 2.10 instead of 2.10.4 ? ./core/build/dependant-libs-2.10.4/snappy-java-1.0.5.jar ./core/build/dependant-libs-2.10.4/metrics-core-2.2.0.jar ./core/build/dependant-libs-2.10.4/zkclient-0.3.jar ./core/build/dependant-libs-2.10.4/log4j-1.2.15.jar ./core/build/dependant-libs-2.10.4/slf4j-api-1.7.2.jar ./core/build/dependant-libs-2.10.4/zookeeper-3.3.4.jar ./core/build/dependant-libs-2.10.4/jopt-simple-3.2.jar ./core/build/dependant-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 名称作为解决方法,Kafka 正确启动。

      ```

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-31
        • 1970-01-01
        • 2020-09-21
        相关资源
        最近更新 更多