SBT-0.7.7将JLine捆绑在发射器中并且工作正常。 E.g:
"C:\Program Files (x86)\Java\jre7\bin\java.exe" -jar C:\scala\sbt-launch-0.7.7.jar
我可以使用光标键导航命令历史记录。它在SBT-0.13.5中不起作用:
"C:\Program Files (x86)\Java\jre7\bin\java.exe" -jar C:\scala\sbt_launch_135.jar
当我按下光标键时,会显示可打印的字符,例如" pHpP"。在target / .history文件中,我们看到字符代码为" 0xE0 0x48 0xE0 0x50"。它在Java8和64位Java中是相同的。我还尝试了各种版本的SBT启动器和 jline.terminal 的各种值,如 -Djline.terminal = jline.AnsiWindowsTerminal 无济于事。我也试过 -Djline.WindowsTerminal.directConsole = false - 然后光标键根本不执行任何功能。在所有情况下,我都可以使用 CTRL + P 和 CTRL + N 来浏览历史记录。
SBT-0.13。*从Ivy存储库加载JLine %HOMEPATH%.sbt \ boot \ scala-2.10.3 \ org.scala-sbt \ sbt \ 0.13.1 \ jline-2.11.jar 我检查了JLine的源代码。版本2.10.3具有原始配置文件 keybindings.properties , WindowsTerminal.java 中的函数 readVirtualKey()处理光标键。所有版本的JLine都在一个临时目录中安装一个帮助DLL,如%HOMEPATH%\ AppData \ Local \ Temp \ _ jline_.dll ,这可能有效。
为什么它无法正常工作?如何使光标键工作?