30320


以下の環境でJavaAkkaを利用した定期処理を実装したいのですが、コンパイルエラーがとれない状況です。

解決法をご存知の方がいらっしゃいましたら手助けしていただけないでしょうか。

・IDE：eclipse Neon.1a Release (4.6.1)  
・java:jdk1.8.0_91  
・コンパイラ：java 1.8  
・フレームワーク：playframework 2.5

[code]

    package services;
    import java.util.concurrent.CompletableFuture;
    import java.util.concurrent.TimeUnit;
    
    import javax.inject.Inject;
    import javax.inject.Singleton;
    
    import akka.actor.ActorSystem;
    import play.Logger;
    import play.inject.ApplicationLifecycle;
    
    @Singleton
    public class MyApplicationGlobal {
    
        @Inject
        public MyApplicationGlobal(final ActorSystem system, ApplicationLifecycle lifecycle) {
    
            // サーバ起動時の動作
            Logger.info("----------------------------------- Start application... ------------------------------");
    
            system.scheduler().schedule(
                    Duration.create(0, TimeUnit.MILLISECONDS), //Initial delay 0 milliseconds
                    Duration.create(30, TimeUnit.MINUTES),     //Frequency 30 minutes
                    null,
                    "tick",
                    system.dispatcher(),
                    null
                );
    
            lifecycle.addStopHook(() -> {
                Logger.info("----------------------------------- Stop application... ------------------------------");
                return CompletableFuture.completedFuture(null);
            });
        }
    }
    
[/code]

コンパイルエラー発生箇所・内容  
１行目：

> この行に複数マーカーがあります  
>  \- 型 scala.Function0 を解決できません。必要な .class ファイルから間接的に参照されていま す  
>  \- 型 scala.runtime.BoxedUnit を解決できません。必要な .class ファイルから間接的に参照 されています  
>  \- 型 scala.concurrent.ExecutionContext を解決できません。必要な .class ファイルから間
> 接的に参照されています  
>  \- 型 scala.concurrent.duration.FiniteDuration を解決できません。必要な .class ファイルか
> ら間接的に参照されています

22,23行目のDuration：  
インポート対象にscala.concurrent.duration.Durationが出てきません

26行目のsystem.dispatcher()：

> この行に複数マーカーがあります  
>  \- 型 ActorSystem のメソッド dispatcher() は存在しない型 ExecutionContextExecutor を
> 参照しています  
>  \- 型 scala.concurrent.ExecutionContextExecutor を解決できません。必要な .class ファイ
> ルから間接的に参照されています

・build.sbtのライブラリ依存性設定箇所

[code]

    libraryDependencies ++= Seq(
      javaJdbc,
      cache,
      javaWs,
      filters,
      evolutions,
      "org.postgresql" % "postgresql" % "9.4.1210",  
      "com.amazonaws" % "aws-java-sdk-ses" % "1.11.51",
      "com.amazonaws" % "aws-java-sdk-s3" % "1.11.51"
    )
    
[/code]

* * *

どうやら全体的にscalaのライブラリを参照できていないようなのですが、なにか必要な記述やライブラリが抜けているのでしょうか。


CC BY-SA 3.0
2016-11-10T10:36:39.903
30305
2016-11-12T13:50:12.990
2016-11-10T19:31:56.510
3068
7384
question
java playframework akka
【Playframework2.5】JavaAkkaのschedulerが利用できない


下記の手順でプロジェクトをインポートしましたが、私の環境ではEclipseのエディタ上でエラーは発生せず、`scala.concurrent.duration.Duration`の定義元へ移動することもできました。  
ご参考ください。

既に同様の手順で環境構築をされていて、エラーが発生している場合はご容赦ください。  
(Eclipseは既に1年以上使用しておらず、個人的にはIntelliJを推奨します…)

**環境:**

  * Windows 10(64bit)
  * sbt 0.13.13
  * JDK 1.8.0_102
  * Scala 2.11.8  
Scala IDEのために必要...？

**手順:**

  1. Eclipse Neon.1a Release (4.6.1)をインストール
  2. Scala IDE (Eclipse plugin)をインストール  
<http://scala-ide.org/>

  3. `project/plugins.sbt` に `addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "5.0.1")`を追加  
<https://github.com/typesafehub/sbteclipse>

  4. `sbt eclipse`を実行し、Eclipseプロジェクトへ変換
  5. Eclipseで`[File]-[Import...]`を選択後、`General > Existing Projects into Workspace`でプロジェクトを読み込む


CC BY-SA 3.0
2016-11-11T06:31:39.027
30320
2016-11-11T06:31:39.027
3068
30305
answer


ありがとうございました！  
以下の方法で自己解決しましたので、こちらに方法を記載しておきます。

１．上記の方と環境等をあわせる  
２．<http://mofmof721.hatenablog.com/entry/2015/12/27/002034>  
こちらを参考にして、build.sbtにコンパイルエラー対策を記載して取り込みなおす

sbtに記載した内容については現状詳しくは理解していませんが・・・。

ひとまず現象がおちつきましたので、解決済みとします。  
お世話になりました！


CC BY-SA 3.0
2016-11-12T13:50:12.990
30347
2016-11-12T13:50:12.990
7384
30305
answer