Scala - SBT 设置,bash:`=~' 附近的语法错误
Scala - SBT setup, bash: syntax error near `=~'
尝试在我的家用计算机上安装 scala 和 sbt windows 10 进行练习。
已安装:
- Scala 版本 2.12.4
- SBT 1.1.4
- java 版本 "9.0.4"
- Java(TM) SE Runtime Environment (build 9.0.4+11)
- Java HotSpot(TM) 64 位服务器 VM(内部版本 9.0.4+11,混合模式)
运行 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"
尝试在我的家用计算机上安装 scala 和 sbt windows 10 进行练习。
已安装:
- Scala 版本 2.12.4
- SBT 1.1.4
- java 版本 "9.0.4"
- Java(TM) SE Runtime Environment (build 9.0.4+11)
- Java HotSpot(TM) 64 位服务器 VM(内部版本 9.0.4+11,混合模式)
运行 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"