2

コマンドを実行すると:

D:\scalaTest>fsc Summer.scala ChecksumAccumulator.scala

D:\scalaTest>scala Summer hello world

例外は次のとおりです。

Exception in thread "main" java.lang.RuntimeException: Cannot figure out how to run target: Summer
        at scala.sys.package$.error(package.scala:27)
        at scala.tools.nsc.GenericRunnerCommand.scala$tools$nsc$GenericRunnerCommand$$guessHowToRun(GenericRunnerCommand.scala:38)
        at scala.tools.nsc.GenericRunnerCommand$$anonfun$2.apply(GenericRunnerCommand.scala:48)
        at scala.tools.nsc.GenericRunnerCommand$$anonfun$2.apply(GenericRunnerCommand.scala:48)
        at scala.Option.getOrElse(Option.scala:108)
        at scala.tools.nsc.GenericRunnerCommand.<init>(GenericRunnerCommand.scala:48)
        at scala.tools.nsc.GenericRunnerCommand.<init>(GenericRunnerCommand.scala:17)
        at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:33)
        at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:89)
        at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)

これは、2 つの scala ファイルを含むソース コードです。

1つはSummer.scalaです:

import ChecksumAccumulator.calculate

object Summer {
  def main(args:Array[String]) {
    for(arg <- args)
      println(arg + ":" + calculate(arg))
  }
}

もう 1 つは ChecksumAccumulator.scala です。

import scala.collection.mutable.Map

class ChecksumAccumulator {

  private var sum=0

  def add(b:Byte) { sum += b }

  def checksum():Int = ~(sum & 0xFF) + 1
}

object ChecksumAccumulator {

  private val cache = Map[String,Int]()

  def calculate(s:String):Int =
    if(cache.contains(s))
      cache(s)
    else {
      val acc = new ChecksumAccumulator
      for(c<-s)
        acc.add(c.toByte)
      val cs = acc.checksum()
      cache += (s->cs)
      cs
    }
}

どうもありがとう

ところで、これはMartin Oderskyによる本「scala 2nd.Editionでのプログラミング」の例です

4

1 に答える 1

4

推測する必要がある場合は、CLASSPATH環境変数に含まれていないため.です。

ファイルが正しく生成されている限り、Summer.classそれを実行できるはずです

scala -cp . Summer hello world
于 2012-05-05T01:44:48.923 に答える