9

来自 Akka 的网站文档:

然后这个主要方法将创建运行参与者所需的基础设施,启动给定的主要参与者并安排整个应用程序在主要参与者终止后关闭。因此,您将能够使用类似于以下的命令运行上述代码:

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);
    }
}
4

2 回答 2

12

似乎文档和二进制发行版不同步。

正如你在 Github 上看到的,它Main.scala是在 16 天前添加的。

要解决此问题,您可以将依赖版本更改为SNAPSHOT。将快照存储库添加到 pom 并将版本更改为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将可用。为了启动应用程序,您必须指向正确的主类并添加您自己的演员类作为参数。

首先选择新建一个运行配置:

在此处输入图像描述

然后添加一个新的应用程序:

在此处输入图像描述

给应用程序一个名称(Actor 之类的)并填写要成为的主类akka.Main并将您的HelloWorld类添加为Program Arguments(记得包含完整的包):

在此处输入图像描述

现在您已准备好运行程序,只需按下工具栏中的播放按钮:

在此处输入图像描述

瞧!

于 2013-05-16T08:28:36.750 回答
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() });
  }
}
于 2017-03-19T11:06:28.993 回答