私は、ユーザーにいくつかのオプションを提示し、ユーザーの入力を取得し、それに応じて行動できる単純なコンソールクライアントアプリケーションを作成しようとしています。コードをintellijで実行するか、scalaコンソールに貼り付けると、機能します。sbtを介して実行すると(これを実行するために実際に必要な方法です)、あらゆる種類の問題が発生します。
私はsbtバージョン0.13.8を持っています、OSはMacです、私のbuild.sbtは以下を含みます:
scalaVersion := "2.11.6"
fork in run := true
編集私は、このコンテキストで役立つ情報である場合に備えて、最小限のscalaアクティベーターテンプレートから始めました
コードを必要最低限に簡略化しましたが、
import scala.io.StdIn._
object TestClient {
def main(args: Array[String]): Unit = {
join()
}
def join(): Unit = {
val name = readLine(s"Enter your name.${System.getProperty("line.separator")}")
name match {
case n: String => println(n)
case o => {
println(s"invalid name ${o}")
join()
};
}
}
}
sbtに入り、プロンプトからrunと入力します。次のいずれかが発生しているようです
1)実行するとすぐにこの例外が発生します
Exception in thread "Thread-2" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:3332)
at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:137)
at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:121)
at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:569)
at java.lang.StringBuffer.append(StringBuffer.java:369)
at java.io.BufferedReader.readLine(BufferedReader.java:370)
at java.io.BufferedReader.readLine(BufferedReader.java:389)
at sbt.BasicIO$$anonfun$processFully$1$$anonfun$apply$8.apply(ProcessImpl.scala:58)
at sbt.BasicIO$$anonfun$processFully$1$$anonfun$apply$8.apply(ProcessImpl.scala:58)
at sbt.BasicIO$.readFully$1(ProcessImpl.scala:63)
at sbt.BasicIO$.processLinesFully(ProcessImpl.scala:69)
at sbt.BasicIO$$anonfun$processFully$1.apply(ProcessImpl.scala:58)
at sbt.BasicIO$$anonfun$processFully$1.apply(ProcessImpl.scala:55)
at sbt.SimpleProcessBuilder$$anonfun$3.apply$mcV$sp(ProcessImpl.scala:354)
at sbt.Spawn$$anon$3.run(ProcessImpl.scala:17)
2)メモリの問題はありませんが、これらのメッセージを無限ループで取得するため、readlineは入力を待機していないようです
background log: info: Enter your name.
background log: info: invalid name null
background log: info: Enter your name.
background log: info: invalid name null
...
いずれにせよ、コンソールに実際に入力を入力することはできません。何が欠けているのか、間違っているのかわからない
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加