2014-05-12 13 views
7

Spero di perdere qualcosa in quanto sembra che le sequenze di tasti non vengano visualizzate sullo schermo quando un programma viene eseguito all'interno di sbt. Ecco un esempio:L'ingresso della console all'interno di SBT non riecheggia sullo schermo

object ConsoleTest extends App { 
    println("Enter a line:") 
    val input = Console.readLine() 
    println("You entered: " + input) 
} 

Quando compilo questo codice semplice ed eseguirlo dalla riga di comando (fuori della SBT), vedo i tasti come li ho tipo per l'ingresso e tutto funziona bene.
Sfortunatamente, quando uso sbt per compilare lo &, eseguo lo stesso codice, non fa affatto eco alla sequenza di tasti sullo schermo. Questa è un'esperienza sconcertante.
Qualcun altro ha riscontrato questa differenza?
Ho fatto qualche ricerca per vedere se altri lo incontrano e se ci potrebbe essere un parametro runtime di sbt per consentire l'eco della battitura. Nessuna fortuna finora.
Sto usando sbt-0.13.2 e la versione Java del codice precedente presenta questa stessa differenza, quindi sembra localizzata nell'esecuzione nell'ambiente sbt.
Qualsiasi intuizione è apprezzata.

+1

quale sistema operativo utilizzi? Da che tipo di terminale usi sbt? – gourlaysama

+0

Windows 7 Pro, shell MS-DOS, Java 1.7, Scala 2.10.4. Se non era chiaro, println funziona bene, è la precedente lettura riga che non ha i tasti premuti in SBT. –

+0

L'input stampa bene, anche se i caratteri non vengono visualizzati sullo schermo? Smette di aspettare l'input? – lpiepiora

risposta

0

Questa domanda è di 2,5 anni, ancora nessuna risposta, quindi ecco qui :)

Ho testato con Windows 10, utilizzando Scala 2.12.1, SBT 0.13.13.1. Il programma di test ha funzionato bene con Cmd e WSL's bash.

Storicamente questo problema è stato sintomatico di un problema JLine. È possibile sovrascrivere l'impostazione JLine con la variabile di sistema Java jline.terminal su valori come auto, none e windows. Here are the complete docs.

Ecco alcuni esempi di come specificare varie impostazioni:

C:\work\experiments\sbt\optionTest>sbt run 
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0 
[info] Loading project definition from C:\work\experiments\sbt\optionTest\project 
[info] Updating {file:/C:/work/experiments/sbt/optionTest/project/}optiontest-build... 
[info] Resolving org.fusesource.jansi#jansi;1.4 ... 
[info] Done updating. 
[info] Set current project to change-me (in build file:/C:/work/experiments/sbt/optionTest/) 
[warn] there was one deprecation warning (since 2.11.0); re-run with -deprecation for details 
[warn] one warning found 
Enter a line: 
asdf 
You entered: asdf 
[success] Total time: 46 s, completed Jan 7, 2017 1:27:27 PM 

C:\work\experiments\sbt\optionTest> sbt "-Djline.terminal=none" run 
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0 
[info] Loading project definition from C:\work\experiments\sbt\optionTest\project 
[info] Set current project to change-me (in build file:/C:/work/experiments/sbt/optionTest/) 
Enter a line: 
asdf 
You entered: asdf 
[success] Total time: 3 s, completed Jan 7, 2017 1:28:12 PM 

C:\work\experiments\sbt\optionTest> sbt "-Djline.terminal=windows" run 
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0 
[info] Loading project definition from C:\work\experiments\sbt\optionTest\project 
[info] Set current project to change-me (in build file:/C:/work/experiments/sbt/optionTest/) 
Enter a line: 
asdf 
You entered: asdf 
[success] Total time: 3 s, completed Jan 7, 2017 1:28:26 PM 
Problemi correlati