1

これは私が本から使用したコードです...

import scala.actors.Actor._

val countActor = actor {
  loop {
    react {
      case "how many?" => {
        println("I've got " + mailboxSize.toString + " messages in my mailbox.")
      }
    }
  }
}

countActor ! 1
countActor ! 2
countActor ! 3
countActor ! "how many?"
countActor ! "how many?"
countActor ! 4
countActor ! "how many?"

エラー

java.lang.NoClassDefFoundError:Main $$ anon $ 1 $$ anonfun $ 1 $$ anonfun $ apply $ 2

4

1 に答える 1

3

コンパイルするのではなく、scalaだけで実行していると思います。スクリプトをコンパイルすると(そしてアプリケーション特性のシングルトンオブジェクトでラップすると)、スクリプトは機能します。

import scala.actors.Actor._
object ActorTest extends Application {
  val countActor = actor {
    loop {
        react {
            case "how many?" => { println("I've got " + mailboxSize.toString + " messages in my mailbox.") }
      }
    }
  }

  countActor ! 1
  countActor ! 2
  countActor ! 3
  countActor ! "how many?"
  countActor ! "how many?"
  countActor ! 4
  countActor ! "how many?"
}

// vim: set ts=4 sw=4 et:

それをコンパイルすると、次のファイルが表示されます。

  • ActorTest $$ anonfun $ 1 $$ anonfun $ apply $ 2 $$ anonfun $ apply $ 1.class
  • ActorTest $$ anonfun $ 1 $$ anonfun $ apply $ 2.class
  • ActorTest $$ anonfun $ 1.class
  • ActorTest $ .class
  • ActorTest.class

で呼び出すと、次のscala -cp . ActorTestようになります。

リクール:〜tom $scala-cp。ActorTest
メールボックスに6つのメッセージがあります。
メールボックスに5つのメッセージがあります。
メールボックスに4つのメッセージがあります。
^ C

「メールボックスに4つのメッセージがあります」という出力が表示された後、Ctrl+Cを押すまで待機します。

お役に立てば幸いです。

于 2010-04-14T15:52:12.707 に答える