2013-10-11 14 views
8

का उपयोग करके सरल अक्का नमूना चलाने में विफल रहा मैं केवल अक्का नमूना का पालन कर रहा हूं लेकिन प्रोग्राम नहीं चला सका।एसबीटी

  1. मैं स्थापित किया है अक्का, एसबीटी (0.13), स्केला (2.10.3) homebrew का उपयोग कर (OSX Mountail शेर)
  2. akka_test
  3. नामित खाली निर्देशिका बनाने बनाने build.sbt और Hello.scala फ़ाइल
  4. रन akka_test निर्देशिका और में एसबीटी आदेश संकलन अच्छी तरह से काम
  5. एसबीटी के रन आदेश शिकायत कोई मुख्य वर्ग नहीं मिला

प्रोग्राम चलाने के लिए मुझे क्या करना चाहिए?

यहाँ मेरी कोड

build.sbt है

name := "My Project" 

version := "1.0" 

scalaVersion := "2.10.2" 

resolvers += "Typesafe Repository" at "http://repo.typesafe.com/typesafe/releases/" 

libraryDependencies += 
    "com.typesafe.akka" %% "akka-actor" % "2.2.1" 

Hello.scala

import akka.actor.Actor 
import akka.actor.Props 

class HelloWorld extends Actor { 

    override def preStart(): Unit = { 
    // create the greeter actor 
    val greeter = context.actorOf(Props[Greeter], "greeter") 
    // tell it to perform the greeting 
    greeter ! Greeter.Greet 
    } 

    def receive = { 
    // when the greeter is done, stop this actor and with it the application 
    case Greeter.Done ⇒ context.stop(self) 
    } 
} 

object Greeter { 
    case object Greet 
    case object Done 
} 

class Greeter extends Actor { 
    def receive = { 
    case Greeter.Greet ⇒ 
     println("Hello World!") 
     sender ! Greeter.Done 
    } 
} 
+0

प्रयास करें typesafe एक्टिवेटर और हैलो अक्का ट्यूटोरियल: http://akka.io/downloads/ –

उत्तर

5

एसबीटी रन def main(args: Array[String]) के साथ एक "मुख्य" वर्ग, यानी, एक वर्ग के लिए लग रहा है या फैली विशेषता App

class HelloWorldMain { 
    def main(args: Array[String]) { 
     import akka.actor.ActorSystem 
     val system = ActorSystem("HelloWorld") 
     val helloWorldActor = system.actorOf(Props[HelloWorld] ...) 
     // ... Do stuff 
    } 
} 

प्रणालियों के बाद से अभी तक आप उन्हें शट डाउन आप अपने मुख्य चाहते हैं चलाने के लिए,: चूंकि कि एक अभिनेता नहीं किया जा सकता, तो आप ऐसा कुछ की तरह एक प्रणाली शुरू करने और उपयोग करें कि HelloWorld आरंभ करने के लिए करने की आवश्यकता होगी, कक्षा को रोकने के लिए आपको या तो akka.pattern.ask के माध्यम से वायदा का उपयोग करना होगा और आपके द्वारा सिस्टम को मारने के लिए सिस्टम को अलग करने के लिए सिस्टम को समाप्त कर दिया जाएगा या सिस्टम को मारने के लिए एक अलग रेपर अभिनेता स्थापित किया जाएगा। This post कि कैसे करना है के बारे में अधिक जानकारी है, और this pull request यह कैसे व्यवहार में लग रहा है की एक अच्छा उदाहरण है (और वहाँ के रूप में अच्छी तरह से कुछ अन्य उपयोगी सामान है)

13

एसबीटी run-main आदेश जो कमांड लाइन से मुख्य वर्ग को स्वीकार करता है, तो पूर्ण आदेश

sbt "run-main akka.Main HelloWorld" 
+0

मेरे एसबीटी पर यह "अपेक्षित व्हाइटस्पेस कैरेक्टर" संदेश में असफल रहा है। संस्करण यह 'एसबीटी "रन-मुख्य अक्का स्वीकार करता है। मुख्य हैलोवर्ल्ड" '(उद्धरण के साथ)। – pepyakin

4

मामले में आप पैकेज आप पथ जोड़ने की जरूरत है। उदाहरण के लिए अगर आपके पास पैकेज com.foo.bar
(अपने HelloWorld ./youProject/src/main/scala/com/foo/bar में है) तो आदेश हो जाएगा:

sbt "run-main akka.Main com.foo.bar.HelloWorld"