2014-07-18 5 views
0

두 개의 다른 로컬 Akka ActorSystems에 원격으로 연결하려고합니다. Scala 2.11.1 및 Akka 2.3.3을 사용하고 있습니다.왜 원격 액터 시스템에 연결할 수 없습니까?

내 application.conf은 다음과 같습니다

akka { 
    loglevel = "DEBUG" 
    actor { 
    provider = "akka.remote-RemoteActorRefProvider" 
    } 
    remote { 
    enabled-transports = ["akka.remote.netty.tcp"] 
    netty.tcp { 
     hostname = "127.0.0.1" 
     port = 2552 
    } 
    } 
} 
localConf { 
    akka.remote.netty.tcp.port = 8448 
} 
remoteConf { 
    akka.remote.netty.tcp.port = 4224 
} 

Actor 꽤 똑바로 앞으로이다.

import akka.actor._ 
import com.typesafe.config.ConfigFactory 

object RemoteStart extends App { 
    val config = ConfigFactory.load() 
    val system = ActorSystem("remoteSystem", config.getConfig("remoteConf").withFalBack(config)) 
    val actor = system.actorOf(Props[Consumer], name = "consumer") 
} 

그리고 마지막으로 내 로컬 시스템의 코드 : 내가 사용하고있는 원격 시스템에 대한

import akka.actor._ 

class Consumer extends Actor { 
    def receive = { 
    case msg: String => println("Received: " + msg) 
    } 
} 

import akka.actor._ 
import com.typesafe.config.ConfigFactory 

object LocalStart extends App { 
    val config = ConfigFactory.load() 
    val system = ActorSystem("loaclSystem", config.getConfig("localConf").withFallBack(config)) 
    val actor = system.actorSelection("akka.tcp://[email protected]:4224/user/consumer") 
    actor ! "test" 
} 

나는 그것이 Received: test를 인쇄 할 것으로 기대한다. 하지만 대신 오류 메시지가 나타납니다. 대신 다음과 같은 오류 메시지가 표시됩니다.

java.lang.NoSuchMethodError: akka.actor.ActorSelectionMessage.wildcardFanOut()Z 

무엇이 누락 되었습니까?

답변

2

당신은 클래스 패스에 Akka의 충돌 버전이 있습니다. NoSuchMethodErrors는 거의 항상 그 원인으로 인해 발생합니다.

+0

실제로 클래스 경로에 많은 라이브러리가 충돌하는 버전이 있습니다. SBT 캐시를 삭제하고 실제로 필요한 라이브러리를 다시 가져온 후에는 모두 완벽하게 작동했습니다. –

관련 문제