windows - Scala - SBT setup, bash: syntaksfejl nær `= ~ '

Indlæg af Hanne Mølgaard Plasc

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"