Windows10下Scala与SBT环境搭建报错:bash语法错误
解决Windows10 Git Bash下SBT 1.1.4执行
sbt new报错的方案 嘿,这个报错我之前帮人排查过,本质是旧版SBT(1.1.4)和Java 9的兼容性问题,再加上你的SBT装在带空格的Program Files (x86)路径里,直接触发了启动脚本的语法bug。下面给你几个实用的解决思路:
一、最稳妥的方案:升级SBT+换无空格路径
SBT 1.2.0及以后的版本已经修复了Java 9的适配问题,而且避开带空格的安装路径能彻底解决脚本解析的路径问题:
- 先卸载你当前的SBT 1.1.4
- 下载SBT 1.2.x或者更高的稳定版本(比如1.3.x系列,对Java 8/9都友好)
- 安装的时候选个不带空格的路径,比如
C:\sbt,别再用Program Files这类带空格的目录了
二、临时救急:修改SBT启动脚本(不推荐长期用)
如果暂时不想升级,你可以手动改一下报错的脚本文件:
- 找到
C:\Program Files (x86)\sbt\bin\sbt-launch-lib.bash - 打开后定位到第126行,原代码是用
[[ ]]的写法,Git Bash的旧版bash不兼容这个语法,改成[ ]分开判断:# 原代码 if [[ -n "$JAVA_HOME" && -x "$JAVA_HOME/bin/java" ]] # 修改后 if [ -n "$JAVA_HOME" ] && [ -x "$JAVA_HOME/bin/java" ] - 保存后再试命令,但这个方法只是临时绕开,Java 9和SBT 1.1.4可能还有其他隐藏问题
三、更适合练习的环境:切回Java 8
其实Scala 2.12.4和Java 8的适配是最完善的,很多旧工具在Java 9下容易出幺蛾子:
- 装个Java 8(比如AdoptOpenJDK 8,免费好用)
- 把系统环境变量的
JAVA_HOME改成Java 8的安装路径,PATH里把Java 8的bin目录放在Java 9前面 - 重启Git Bash后,输
java -version确认已经切换到Java 8,再跑sbt new应该就没问题了
验证一下
改完之后,先在Git Bash里输这两个命令确认版本:
sbt --version java -version
确认版本符合要求后,再执行sbt new scala/projectname.g8,就能正常创建练习项目啦!
内容的提问来源于stack exchange,提问作者crowgers
相关产品推荐
相关产品推荐

