いくつかのチュートリアルの後、Akka との独自のチャットを作成して、少し遊んでみたいと思いました。さらに難しいことに、私は Eclipse を数年使用した後、IntelliJ IDEA も取り上げようとしています。
akka-cluster を取得するためのシンプルな POM をセットアップし、自動インポートを有効にし、IDEA をセットアップして Scala をサポートしました (プロジェクトを右クリックし、「フレームワーク サポート」で Scala を有効にします)。作業を開始するために数行のコードを書きました。奇妙なことに、コードは正しくコンパイルおよび実行されますが ("hello, world" を出力して終了します)、IDEA はコードに何か問題があることを報告します (コンパイルの失敗につながると予想されるエラー)。
ここに私のpom.xmlがあります:
<?xml version="1.0" encoding="UTF-8"?>
<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.example</groupId>
<artifactId>akka-chat-sim</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>2.10.4</version>
</dependency>
<dependency>
<groupId>com.typesafe.akka</groupId>
<artifactId>akka-actor_2.10</artifactId>
<version>2.3.7</version>
</dependency>
<dependency>
<groupId>com.typesafe.akka</groupId>
<artifactId>akka-cluster_2.10</artifactId>
<version>2.3.7</version>
</dependency>
</dependencies>
</project>
コードは次のとおりです。
package com.example.tutorials.akka.chat
import akka.actor.{Props, ActorLogging, Actor, ActorSystem}
class Foo extends Actor with ActorLogging {
def receive = {
case s: String => {
log.info(s)
context.system.shutdown()
}
}
}
object Main extends App {
val system = ActorSystem("foo")
val foo = system.actorOf(Props[Foo], "foo")
foo ! "hello, world"
}
IntelliJ IDEA は、ActorSystem インポートが使用されていない (使用されている) ことを示し、数行後に ActorSystem.apply を解決できないことを示しています (ただし、コンパイルして正しく実行されるため、何らかの形で解決します)。
さらに、Foo の receive メソッドの右中括弧が強調表示され、Expression of type Unit doesn't conform to expected type BoxedUnit
.
私は何が欠けていますか?よろしくお願いします。