【发布时间】:2014-07-29 22:19:44
【问题描述】:
$ cassandra
Cassandra 2.0 and later require Java 7 or later.
好的,初始化脚本的那部分发生了什么?
java_ver_output=`"${JAVA:-java}" -version 2>&1`
jvmver=`echo "$java_ver_output" | awk -F'"' 'NR==1 {print $2}'`
JVM_VERSION=${jvmver%_*}
JVM_PATCH_VERSION=${jvmver#*_}
if [ "$JVM_VERSION" \< "1.7" ] ; then
echo "Cassandra 2.0 and later require Java 7 or later."
exit 1;
fi
嗯,如果我在命令行获取版本:
$ java_ver_output=`"${JAVA:-java}" -version 2>&1`
$ echo $java_ver_output
java version "1.7.0_55" Java(TM) SE Runtime Environment (build 1.7.0_55-b13) Java HotSpot(TM) 64-Bit Server VM (build 24.55-b03, mixed mode)
$ JVM_VERSION=${jvmver%_*}
$ echo $JVM_VERSION
1.7.0
如果我运行which java:
$ which java
/usr/bin/java
如果我将该行放入脚本中:
/usr/bin/java
这里令人沮丧的部分是我过去曾运行过此程序,但自从我退回服务器后,我无法启动 cassandra。
所以我在这里感到困惑,Cassandra 对我正在运行的 Java 版本感到困惑吗?如何让 cassandra 运行? 1.7.0_55 不是 Java 7(我不了解 Java 的命名约定)吗?
【问题讨论】:
-
修改脚本以打印出
$JVM_VERSION,这样你就可以看到它实际得到了什么。 -
@HunterMcMillen 好建议,我得到了 1.6.0,但是当我在命令行运行这些命令时我没有得到。 WTF。
-
尝试在脚本外部和内部运行
which java,以查看引用了哪些可执行文件。 -
@HunterMcMillen 我更新了这个问题。我看不出有什么不同。
-
@SotiriosDelimanolis “完整打印”?你一定是在开玩笑。