2013-05-15 2 views
9

С AKKA»сайтом документов:Как запустить Акку актеров в IntelliJ IDEA

Это основной метод затем будет создавать инфраструктуру, необходимую для работы актеров, начать данный главный актер и организовать для всего приложения для остановки, когда главный актер завершается. Таким образом вы будете иметь возможность запускать код выше с командой аналогично следующее:

Java -classpath akka.Main example.two.HelloWorld

Итак, как я могу запустить его из IntelliJ IDEA? Для этого я не нашел хорошего/правильного окна.

зависимые пакеты для AKKA уже в проекте:

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

Сам код (как вы можете видеть, что нет 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); 
    } 
} 

ответ

12

Похоже, документации и бинарных распределений не синхронизированы.

Как вы можете видеть here on GithubMain.scala было добавлено всего 16 дней назад.

Чтобы исправить это, вы можете изменить версию зависимости вместо SNAPSHOT. Добавьте репозиторий снимка в ПОМ и изменения версии для 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> 

Теперь akka.Main будет доступен. Чтобы запустить приложение, вам нужно будет указать правильный основной класс и добавить свой собственный класс актера в качестве аргумента.

Сначала решили создать новую конфигурацию:

enter image description here

Затем добавить новое приложение:

enter image description here

дать приложению имя (актер или что-то) и заполнить основной класс должен быть akka.Main и добавить свой класс HelloWorld как Program Arguments (не забудьте включить полный пакет):

enter image description here

И теперь вы готовы запустить программу, просто нажмите кнопку воспроизведения на панели инструментов:

enter image description here

Вуаля!

+0

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

+0

@ses Ну, так как вы используете пример из версии SNAPSHOT, тогда я не действительно вижу проблему.Если вы хотите, чтобы это работало в стабильном выпуске, вам придется подождать. По крайней мере, я ответил на ваш вопрос. Итак, как я могу запустить его из IntelliJ IDEA? * – maba

+0

пока я буду рад иметь: https://github.com/akka/akka/blob/master/akka-actor/src /main/scala/akka/Main.scala этот класс написан на 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() }); 
    } 
} 
Смежные вопросы