2012-02-07 6 views
2

を始めると、この解決することができていませんでした:それはそのはScalaの2.7.7を使用しているという理由私は、あまりにも思っていたは見つかりませんし、タイプセーフスタックで不足しているパラメータは、私が<a href="http://typesafe.com/resources/getting-started/tutorials/getting-started-first-scala.html" rel="nofollow">typesafe stack tutorial</a>に従っていました

> reload 
[info] Building project Tutorial 1 1.0 against Scala 2.9.1 
[info] using TutorialOneProject with sbt 0.7.7 and Scala 2.7.7 
> compile 
[info] 
[info] == compile == 
[info] Source analysis: 1 new/modified, 0 indirectly invalidated, 0 removed. 
[info] Compiling main sources... 
[error] /home/carlos/workspaces/scala/tutorial-1/src/main/scala/Pi.scala:3: not found: object Actor 
[error] import Actor._ 
[error]  ^
[error] /home/carlos/workspaces/scala/tutorial-1/src/main/scala/Pi.scala:34: missing parameter type for expanded function 
[error] The argument types of an anonymous function must be fully known. (SLS 8.5) 
[error] Expected type was: ? 
[error]  def receive = { 
[error]     ^
[error] /home/carlos/workspaces/scala/tutorial-1/src/main/scala/Pi.scala:58: missing parameter type for expanded function 
[error] The argument types of an anonymous function must be fully known. (SLS 8.5) 
[error] Expected type was: <error> 
[error]  def receive: { 
[error]      ^
[error] three errors found 
[info] == compile == 
[error] Error running compile: Compilation failed 
[info] 
[info] Total time: 2 s, completed 07/02/2012 01:51:56 

package akka.tutorial.first.scala 

import Actor._ 
import akka._ 
import Routing._ 

import java.util.concurrent.CountDownLatch 

object Pi extends App { 

    calculate(nrOfWorkers = 4, nrOfElements = 10000, nrOfMessages = 10000) 

    sealed trait PiMessage 
    case object Calculate extends PiMessage 
    case class Work(start: Int, nrOfElements: Int) extends PiMessage 
    case class Result(value: Double) extends PiMessage 

    class Worker extends Actor { 

    def calculatePiFor(start: Int, nrOfElements: Int): Double = { 
      var acc = 0.0 
     for (i <- start until (start + nrOfElements)) 
     acc += 4.0 * (1 - (i % 2) * 2)/(2 * i + 1) 
     acc 
    } 

    def receive = { 
     case Work(start, nrOfElements) => 
     self reply Result(calculatePiFor(start, nrOfElements)) 
    } 
    } 

    class Master(
    nrOfWorkers: Int, nrOfMessages: Int, nrOfElements: Int, latch: CountDownLatch) 
    extends Actor { 

    var pi: Double = _ 
    var nrOfResults: Int = _ 
    var start: Long = _ 

    val workers = Vector.fill(nrOfWorkers)(actorOf[Worker].start()) 

    val router = Routing.loadBalancerActor(CyclicIterator(workers)).start() 

    def receive: { 
     case Calculate => 
     for (i <- 0 until nrOfMessages) router ! Work(i * nrOfElements, nrOfElements) 

     router ! Broadcast(PoisonPill) 

     router ! PoisonPill 

     case Result(value) => 
     pi += value 
     nrOfResults += 1 
     if (nrOfResults == nrOfMessages) self.stop() 
    } 

    override def preStart() { 
     start = System.currentTimeMillis 
    } 

    override def postStop() { 
     println(
     "\n\tPi estimate: \t\t%s\n\tCalculation time: \t%s millis" 
     .format(pi, (System.currentTimeMillis - start))) 
     latch.countDown() 
    } 
    } 

    def calculate(nrOfWorkers: Int, nrOfElements: Int, nrOfMessages: Int) { 

    val latch = new CountDownLatch(1) 

    val master = actorOf(
     new Master(nrOfWorkers, nrOfMessages, nrOfElements, latch)).start() 

    master ! Calculate 

    latch.await() 
    } 
} 

私はそんなにScalaのを知らない、問題は種類で何かであることを知っているが、ないので、次のように代わりに2.9.1の...

私のコード

だけです、私はそれを修正する方法を知りません。

誰かがこれを修正する方法を知っていますか?

ありがとうございます。

+1

akka.actor.Actorを先にインポートする必要があります。また、あなたのコードはチュートリアルのものと少し違って見えます。チュートリアルを最初に実行したいと思っているかもしれません。 – aishwarya

+0

私は試してみましたが、それを作品にする試みを変更しています。とにかく質問を編集しました。あなたはコードを開始することを考慮することができます:) – caarlos0

答えて

0

アクターは、akkaパッケージのメンバーです。そのため、あなたの輸入節は、そのようなアッカパッケージが最初に来ることを並べ替える必要があります。

import akka._ 
import Actor._ 
import Routing._ 

はその助けをしていますか?

ところで、内部で使用しているsbt(ビルドツール)のバージョンはScala 2.7.7で動作しますが、あなたのプロジェクトはScala 2.9.1に対してビルドされています。

import akka.actor.{Actor, PoisonPill} 
import Actor._ 
import akka.routing.{Routing, CyclicIterator} 
import Routing._ 
import akka.dispatch.Dispatchers 

、それは:)

おかげでみんなを働いていた:私はちょうどに私の輸入を変更する完全なメッセージ;-)

+1

私はスキルを取得 '/home/carlos/workspaces/scala/tutorial-1/src/main/scala/Pi.scala:4:見つからない:オブジェクトの俳優 [エラー]インポートの俳優._' – caarlos0

関連する問題