Scala - SBT 设置,bash:`=~' 附近的语法错误

Scala - SBT setup, bash: syntax error near `=~'

尝试在我的家用计算机上安装 scala 和 sbt windows 10 进行练习。

已安装:

运行 git 中的以下命令 bash(在管理员中)

sbt new scala/projectname.g8

收到此错误

/c/Program Files (x86)/sbt/bin/sbt-launch-lib.bash: line 126: conditional binary operator expected
/c/Program Files (x86)/sbt/bin/sbt-launch-lib.bash: line 126: syntax error near `=~'
/c/Program Files (x86)/sbt/bin/sbt-launch-lib.bash: line 126: `  elif [[ "${JAVA_OPTS}" =~ Use.*GC ]] || [[ "${JAVA_TOOL_OPTIONS}" =~ Use.*GC ]] || [[ "${SBT_OPTS}" =~ Use.*GC ]] ; then'
/c/Program Files (x86)/sbt/bin/sbt: line 157: run: command not found

我已经尝试重新安装所有依赖项,修复 sbt 安装。
当我转到目录时,文件被隐藏了。

代码来自 c/Program 文件 (x86)/sbt/bin/sbt-launch-lib。bash 第 120 - 133 行:

get_gc_opts () {
  local older_than_9=$(( $java_version < 9 ))

  if [[ "$older_than_9" == "1" ]]; then
    # don't need to worry about gc
    echo ""
  elif [[ "${JAVA_OPTS}" =~ Use.*GC ]] || [[ "${JAVA_TOOL_OPTIONS}" =~ Use.*GC ]] || [[ "${SBT_OPTS}" =~ Use.*GC ]] ; then
    # GC arg has been passed in - don't change
    echo ""
  else
    # Java 9+ so revert to old
    echo "-XX:+UseParallelGC"
  fi
}

非常感谢对此的任何帮助!

已解决:bash 版本 >3.0 不支持 =~ 运算符。重新安装 git bash for windows 解决了这个问题。

这些命令也适用于 jdk 1.8 或更高版本。

您可以试试这个(按任何顺序):

  • 按照 the Scala "Download" page
  • 上的建议安装 JDK 1.8(而不是 1.9)
  • 确保 bash -version > 3.0,因为 older bash versions do not support =~ operator
  • 此外,您是否尝试使用 sbt.bat?好像是为Windows.
  • 量身定做的

这里没有理由只使用 bash 语法。以下将适用于所有 POSIX 兼容的 shell:

#!/bin/sh

seen=0
for var in "$JAVA_OPTS" "$JAVA_TOOL_OPTIONS" "$SBT_OPTS"; do
  case $var in
    *Use*GC*) seen=1; break ;;
  esac
done

[ "$seen" = 0 ] && echo "-XX:+UseParallelGC"