1

いくつかのチュートリアルの後、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.

私は何が欠けていますか?よろしくお願いします。

4

2 に答える 2

0

最終的に、原因は、私が研究していたすべての Akka チュートリアルを 1 つのプロジェクトのモジュールとしてバンドルしようとしたときに作成した .idea フォルダーだったようです。

Ericが返信で提案したように、私はそれに気づき、削除し、IntelliJのキャッシュをクリアしました。その後、IntelliJ を再起動すると、すべて正常に戻りました。

于 2014-12-08T22:34:45.917 に答える