windows - Scala - SBT setup, bash: syntaksfejl nær `= ~ '
Problem
Forsøger at få scala og sbt setup på mit hjem computer windows 10 til at øve.
Har installeret:
- Scala version 2.12.4
- Sbt 1.1.4
- java-version '9.0.4'
- Java (TM) SE Runtime Environment (build 9.0.4 + 11)
- Java HotSpot (TM) 64-bit server VM (build 9.0.4 + 11, blandet tilstand)
Kører nedenstående kommando i git bash (i admin)
sbt new scala/projectname.g8
Får denne fejl
/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
Jeg har forsøgt at geninstallere alle afhængigheder, reparere sbt install.
Når jeg går til biblioteket, er filerne gemt.
Kode fra c/Programfiler (x86)/sbt/bin/sbt-launch-lib.bash linje 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
}
Godt værdsat enhver hjælp på dette!
LØSET: Operatøren== understøttes ikke i bash-versioner> 3.0. geninstallere git bash for windows løst dette problem. [8]
Kommandoerne fungerer også fint for jdk 1.8 eller derover.
Bedste reference
Du kan prøve dette (i enhver rækkefølge):
- Installer JDK 1.8 (i stedet for 1.9), som foreslået på Scala 'Download' -siden
- Sørg for at du har
bash -version
> 3.0, fordi ældre bash-versioner ikke understøtter operatøren=~
- Har du også forsøgt at bruge
sbt.bat
? Det ser ud til at være skræddersyet til Windows.
Andre referencer 1
Der er ingen grund til at bruge bash-only syntaks her. Følgende vil arbejde på alle POSIX-kompatible skaller: [9]
#!/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"