2017-11-23 12 views
0

私はscalaとakkaには新しく、私はintellijにあるこのサンプルプログラムを試したかったのです。残念ながら、それは動作しません。なぜそれが動作しないのか分かりませんが、私もintellijには新しく、ロードされたライブラリの問題かもしれません。とにかくここにコードがあります。スカウトのクラスを解決できません。例のプログラム

package test 
import akka.actor.{Actor, ActorLogging} 

class Printer extends Actor with ActorLogging{ 
    import Printer._ 

    def receive={ 
    case Greeting(greeting)=> 
    log.info(s"Greeting received (from ${sender()}): $greeting") 
} 
} 

今すぐGreeterクラスが来る:

package test 
import akka.actor.{Actor, ActorLogging, ActorRef, Props} 
class Greeter(message: String, printerActor: ActorRef) extends Actor with 
ActorLogging { 
    import Greeter._ 
    import Printer._ 
    var greeting = "" 
    def receive = { 
    case WhoToGreet(who) => 
     greeting = s"$message, $who" 
    case Greet => 
    printerActor ! Greeting(greeting) 
    } 
} 

そして今、メイン:

package test 
import akka.actor.{ActorRef, ActorSystem} 
import scala.io.StdIn 
object main extends App { 
    import Greeter._ 
    // Create the 'helloAkka' actor system 
    val system: ActorSystem = ActorSystem("helloAkka") 
    try { 
    // Create the printer actor 
    val printer: ActorRef = system.actorOf(Printer.props, "printerActor") 
    // Create the 'greeter' actors 
    val howdyGreeter: ActorRef = 
    system.actorOf(Greeter.props("Howdy", printer), "howdyGreeter") 
    // Send messages 
    howdyGreeter ! WhoToGreet("Akka") 
    howdyGreeter ! Greet 
    println(">>> Press ENTER to exit <<<") 
    StdIn.readLine() 
    } finally { 
    system.terminate() 
     } 
    } 

私はいくつかの "解決することはできません" というエラーを得たこれは、プリンタのクラスです。まず、なぜPrinterとGreeter(import Greeter._/Printer._)にインポートステートメントが必要なのですか?解決できないものとしてマークされています。また、すべてのプリンタまたはGreeterには解決できないものとしてマークされています。

C:\Users\olive\IdeaProjects\akkat\src\test\scala\test\Greeter.scala 
Error:(4, 10) not found: value Greeter 
    import Greeter._ 
Error:(5, 10) not found: value Printer 
    import Printer._ 
Error:(8, 10) not found: value WhoToGreet 
    case WhoToGreet(who) => 
Error:(10, 10) not found: value Greet 
    case Greet => 
Error:(11, 22) not found: value Greeting 
     printerActor ! Greeting(greeting) 
C:\Users\olive\IdeaProjects\akkat\src\test\scala\test\Printer.scala 
Error:(6, 10) not found: value Printer 
    import Printer._ 
Error:(9, 10) not found: value Greeting 
    case Greeting(greeting)=> 
C:\Users\olive\IdeaProjects\akkat\src\test\scala\test\main.scala 
Error:(5, 10) not found: value Greeter 
    import Greeter._ 
Error:(10, 44) not found: value Printer 
    val printer: ActorRef = system.actorOf(Printer.props, "printerActor") 
Error:(13, 20) not found: value Greeter 
    system.actorOf(Greeter.props("Howdy", printer), "howdyGreeter") 
Error:(15, 20) not found: value WhoToGreet 
    howdyGreeter ! WhoToGreet("Akka") 
Error:(16, 20) not found: value Greet 
    howdyGreeter ! Greet 

これらは、私はあなたがScalaのクラスに関連するコンパニオンオブジェクトを作成する必要がlibaries

+0

WhoToGreetとGreetのケースクラスはどこですか? –

答えて

1

をロードするライブラリは、次のとおりです。 はここに私のエラーです。

ex。プリンタクラス

グリーターため
object Printer { 
    def props: Props = Props[Printer] 
    final case class Greeting(greeting: String) 
} 

の場合:

object Greeter { 
    def props(message: String, printerActor: ActorRef): Props = 
    Props(new Greeter(message, printerActor)) 
    final case class WhoToGreet(who: String) 
    case object Greet 
} 

そして、あなたはそれらのプロパティ

Compainonオブジェクトが同じ名前です使用する俳優であるScalaのクラスにこれらのコンパニオンオブジェクトをインポートする必要がありますスカラクラスとして

Companion Object

関連する問題