Skip to content

初始脚本判断错误 #2879

@qushencn

Description

@qushencn

Bug Type (问题类型)

None

Before submit

  • 我已经确认现有的 IssuesFAQ 中没有相同 / 重复问题 (I have confirmed and searched that there are no similar problems in the historical issue and documents)

Environment (环境信息)

  • Server Version: 1.5.0
  • jdk版本:openjdk version "11.0.23" 2024-04-16 LTS

Expected & Actual behavior (期望与实际表现)

if [[ $? -eq 0 && $JAVA_VERSION > "1.9" ]]; then
HugeGraph 1.5.0 脚本中的版本判断逻辑存在缺陷:Shell 的字符串比较无法正确识别 11.0.23 大于 1.9,导致条件分支未执行,参数未添加,最终触发权限报错。

Shell 中的字符串比较(>)是按字典顺序而非数字逻辑比较的。对于版本号 11.0.27 和 1.9:
字典比较时,先比较第一个字符 1(两者相同);
再比较第二个字符:11.0.27 的第二个字符是 1,1.9 的第二个字符是 .(点号);
在 ASCII 码中,. 的优先级高于 1,因此 Shell 会认为 11.0.27 小于 1.9,导致条件判断失败。

优化:

获取 Java 主版本号(如 11、8、7)

JAVA_MAJOR_VERSION=$($JAVA -version 2>&1 | awk -F '"' '/version/ {split($2, arr, "."); if (arr[1] == "1") print arr[2]; else print arr[1]}')

打印主版本号(调试用)

echo "Debug: JAVA_MAJOR_VERSION = $JAVA_MAJOR_VERSION"

数字比较:若主版本 > 9,则添加参数

if [[ $JAVA_MAJOR_VERSION -gt 9 ]]; then
DEFAULT_JAVA_OPTIONS="--add-exports=java.base/jdk.internal.reflect=ALL-UNNAMED"
echo "Debug: 主版本 > 9,添加参数"
else
DEFAULT_JAVA_OPTIONS=""
echo "Debug: 主版本 <= 9,不添加参数"
fi

打印最终参数

echo "Debug: DEFAULT_JAVA_OPTIONS = $DEFAULT_JAVA_OPTIONS"

Vertex/Edge example (问题点 / 边数据举例)

Schema [VertexLabel, EdgeLabel, IndexLabel] (元数据结构)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions