如何在IDE

时间:2016-04-06 22:41:28

标签: eclipse apache-kafka

我正试图在eclipse中设置kafka。我按照文档并安装了所需的插件并导入了项目。我正在尝试设置环境,以便我能够从eclipse运行kafka服务器并逐行调试。 我的最终目标是为卡夫卡做出贡献。要理解代码体系结构,我觉得需要能够逐行调试代码并查看后台会发生什么。我尝试读取kafka的启动脚本,它设置一些参数来实际调用相应的类。 例如在kafka-server-start.sh中 它设置(它设置的参数比我提到的多)

KAFKA_HEAP_OPTS = some value KAFKA_LOG4J_OPTS = some value EXTRA_ARGS="-name kafkaServer -loggc"

之后它正在调用

exec $base_dir/kafka-run-class.sh $EXTRA_ARGS kafka.Kafka "$@"

现在我进入这个脚本有一些循环,它们为类路径添加了一些值,例如(有多个for循环)

    for cc_pkg in "api" "runtime" "file" "json" "tools"
do
  for file in $base_dir/connect/${cc_pkg}/build/libs/connect-${cc_pkg}*.jar;
  do
    CLASSPATH=$CLASSPATH:$file
  done
  if [ -d "$base_dir/connect/${cc_pkg}/build/dependant-libs" ] ; then
    CLASSPATH=$CLASSPATH:$base_dir/connect/${cc_pkg}/build/dependant-libs/*
  fi
done

最后它是如何实际启动kafka服务器的

# Launch mode
if [ "x$DAEMON_MODE" = "xtrue" ]; then
  nohup $JAVA $KAFKA_HEAP_OPTS $KAFKA_JVM_PERFORMANCE_OPTS $KAFKA_GC_LOG_OPTS $KAFKA_JMX_OPTS $KAFKA_LOG4J_OPTS -cp $CLASSPATH $KAFKA_OPTS "$@" > "$CONSOLE_OUTPUT_FILE" 2>&1 < /dev/null &
else
  exec $JAVA $KAFKA_HEAP_OPTS $KAFKA_JVM_PERFORMANCE_OPTS $KAFKA_GC_LOG_OPTS $KAFKA_JMX_OPTS $KAFKA_LOG4J_OPTS -cp $CLASSPATH $KAFKA_OPTS "$@"
fi

不确定如何在运行时告诉所有这些都是eclipse。 如果我将整个脚本文件放在这里,请告诉我。即使我能想到如何做到这一点我也可以试试。 我想我可以在参数窗口中传递这个参数,并且在调试配置中也有一个类路径选项卡,但是我应该在这个窗口中添加脚本中的所有路径吗?

2 个答案:

答案 0 :(得分:1)

只需在参数中传递server.properties文件即可。您可以从运行配置窗口传递此信息,然后单击“应用”并运行/ debug。这应该让你去。您不必遍历所有参数并传递它们。如果你想传递那些参数,那么你必须得到Mathhias如何解释的参数。但是这些参数不是运行kafka所必需的。

但简单的解决方案是右键单击要运行的项目的主类。例如,如果我想运行kafka服务器,我将进入kafka主项目的核心项目

var regexStr = "/[[alf]-[ya]]/";

 function (regexStr) {
   regexStr = replace(regexStr,"[alf]","\u0600");
   regexStr = replace(regexStr,"[ya]","\u06FF");

   return regexStr;
}

右键单击此选择调试然后单击调试配置:在该窗口中传递server.properties文件的路径,然后单击“应用”。 您可以在找到启动脚本的tar中找到server.properties文件。

答案 1 :(得分:0)

首先,将Kafka脚本修改为echo实际命令:

echo $KAFKA_HEAP_OPTS $KAFKA_JVM_PERFORMANCE_OPTS $KAFKA_GC_LOG_OPTS $KAFKA_JMX_OPTS $KAFKA_LOG4J_OPTS -cp $CLASSPATH $KAFKA_OPTS "$@"

之后,您需要在Eclipse中编辑运行配置:

  • 来自$KAFKA_HEAP_OPTS $KAFKA_JVM_PERFORMANCE_OPTS $KAFKA_GC_LOG_OPTS $KAFKA_JMX_OPTS $KAFKA_LOG4J_OPTS的内容并进入字段 JVM参数(在“Arguments”面板中)。
  • CLASSPATH是通过面板“Classpath”
  • 配置的
  • $@应该包含被称为main的实际类(可能程序参数,您可以在面板“Arguments”中设置)