2013-05-15 29 views
9

Od Akka”miejsce docs:Jak uruchomić Akka aktorów w IntelliJ IDEA

to główny sposób będzie następnie utworzyć infrastrukturę umożliwiającą prowadzenie aktorów, uruchom daną głównym aktorem i zorganizować dla całej aplikacji zamknąć, gdy główny aktor się zakończy. Zatem będzie można uruchomić powyższy kod z poleceniem podobnym do następujący:

java -classpath akka.Main example.two.HelloWorld

Tak, jak mogę go uruchomić z IntelliJ POMYSŁ? Nie znalazłem dobrego/właściwego Okna na to.

Dependecy do Akka jest już w projekcie:

<dependencies> 
     <dependency> 
      <groupId>com.typesafe.akka</groupId> 
      <artifactId>akka-actor_2.10</artifactId> 
      <version>2.2-M3</version> 
     </dependency> 
    </dependencies> 

Sam kod (jak widać nie ma main(...)):

public class HelloWorld extends UntypedActor { 

    @Override 
    public void preStart() { 
     // create the greeter actor 
     final ActorRef greeter = 
       getContext().actorOf(Props.create(Greeter.class), "greeter"); 
     // tell it to perform the greeting 
     greeter.tell(Greeter.Msg.GREET, getSelf()); 
    } 

    @Override 
    public void onReceive(Object msg) { 
     if (msg == Greeter.Msg.DONE) { 
      // when the greeter is done, stop this actor and with it the application 
      getContext().stop(getSelf()); 
     } else unhandled(msg); 
    } 
} 

Odpowiedz

12

Wydaje się dokumentacją i dystrybucje binarne nie są zsynchronizowane.

Jak widać here on GithubMain.scala został dodany zaledwie 16 dni temu.

Aby to naprawić, można zamiast tego zmienić wersję zależności na SNAPSHOT. Dodaj repozytorium zrzut do wersji pom i przesiąść się 2.2-SNAPSHOT:

<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.stackoverflow</groupId> 
    <artifactId>akka-app</artifactId> 
    <version>1.0-SNAPSHOT</version> 

    <name>${project.artifactId}-${project.version}</name> 

    <repositories> 
     <repository> 
      <id>akka-snapshots</id> 
      <name>Akka Snapshots</name> 
      <url>http://repo.akka.io/snapshots/</url> 
      <layout>default</layout> 
     </repository> 
    </repositories> 

    <dependencies> 
     <dependency> 
      <groupId>com.typesafe.akka</groupId> 
      <artifactId>akka-actor_2.10</artifactId> 
      <version>2.2-SNAPSHOT</version> 
     </dependency> 

    </dependencies> 

</project> 

Teraz akka.Main będzie dostępna. Aby rozpocząć aplikację, musisz wskazać prawidłową główną klasę i dodać własną klasę aktorów jako argument.

Najpierw wybrał, aby utworzyć nową konfigurację Run:

enter image description here

następnie dodać nową aplikację:

enter image description here

dać aplikacja nazwę (aktora lub coś) i wypełnić główna klasa to akka.Main i dodaj swoją klasę HelloWorld jako Program Arguments (pamiętaj o dołączeniu pełnego pakietu):

enter image description here

A teraz jesteś gotowy do uruchomienia programu, wystarczy nacisnąć przycisk odtwarzania na pasku narzędziowym:

enter image description here

Voila!

+0

C'est bon. Ale o SNAPSHOT: http://stackoverflow.com/questions/16569726/akka-actors-for-java-maven-dependency-issue – ses

+0

@ses Cóż, odkąd używasz przykładu z wersji 'SNAPSHOT', to nie naprawdę widzę problem.Jeśli chcesz, aby to działało stabilnie, musisz poczekać. Przynajmniej odpowiedziałem na twoje pytanie * Więc, jak mogę uruchomić go z IntelliJ IDEA? * – maba

+0

na razie będę szczęśliwy, że mam: https://github.com/akka/akka/blob/master/akka-actor/src /main/scala/akka/Main.scala ta klasa napisana w java – ses

0
//You can use the following code to start your actor: 

public class Main { 

    public static void main(String[] args) { 
     akka.Main.main(new String[] { HelloWorld.class.getName() }); 
    } 
} 
Powiązane problemy