2017-11-23 5 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() 
     } 
    } 

내가 몇 가지 "확인할 수 없습니다"오류가있어이 프린터 클래스입니다. 우선, 프린터 및 Greeter (가져 오기 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 

이 내가 당신은 스칼라 클래스에 관련된 도우미 개체를 만들 필요가 libaries

+0

WhoToGreet 및 Greet의 사례 클래스는 어디에 있습니까? –

답변

1

를로드 libaries은 다음과 같습니다 여기 내 오류입니다.

ex. 당신이 사용할 수있는 배우가 자신의 특성

Compainon 개체가 같은 이름이다는 스칼라 클래스에 이러한 동반자 객체를 가져와야합니다

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

그리고 : 프린터 클래스의 인사

object Printer { 
    def props: Props = Props[Printer] 
    final case class Greeting(greeting: String) 
} 

들어 스칼라 클래스로서

Companion Object