我在 Ubuntu 16.04 上安装了 OpenJDK Headless JAVA 包,运行良好。我的JAVA_HOME
变量设置为:
/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
但是当我启动 Apache Kafka 时,它会尝试从错误的路径加载 JAVA。它看起来像是附加/bin/java
到了变量的末尾JAVA_HOME
。
$ sudo /opt/kafka/kafka_2.11-1.1.0/bin/kafka-server-start.sh /opt/kafka/kafka_2.11-1.1.0/config/server.properties
/opt/kafka/kafka_2.11-1.1.0/bin/kafka-run-class.sh: line 271: /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java/bin/java: Not a directory
/opt/kafka/kafka_2.11-1.1.0/bin/kafka-run-class.sh: line 271: exec: /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java/bin/java: cannot execute: Not a directory
我尝试改为JAVA_HOME
:
/usr/lib/jvm/java-8-openjdk-amd64/jre/
但它仍然指向同一个(无效的)java可执行文件。
然后我检查了 kafka-run-class.sh 中的第 271 行,其中写道:
exec $JAVA $KAFKA_HEAP_OPTS $KAFKA_JVM_PERFORMANCE_OPTS $KAFKA_GC_LOG_OPTS $KAFKA_JMX_OPTS $KAFKA_LOG4J_OPTS -cp $CLASSPATH $KAFKA_OPTS "$@"
因此看起来它正在使用JAVA
变量,所以我尝试导出,
JAVA="/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java"
但没有任何运气。
谁能解释为什么会发生这种情况,以及我该如何解决这个问题?
答案1
sudo vi ~/.bashrc
- 编辑你的 Java Home 目录如下
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre/
export PATH=$PATH:$JAVA_HOME/bin
source ~/.bashrc
- 然后启动 Kafka
~/kafka/bin/kafka-server-start.sh ~/kafka/config/server.properties