在 Java 应用程序中找不到来自 atmosphere-play 的 Scala class

Scala class from atmosphere-play not found in Java application

我正在尝试将 Atmosphere 添加到 Play!Java 同事创建的项目。我正在使用 Play 2.5.4

作为第一步,我只是想添加聊天示例。我已经从 atmosphere-play 的文档中逐字复制了所有内容。

我的 build.sbt 包含以下依赖项(我也有 atmosphere-runtime,但这似乎不是必需的,实际上可能与 atmosphere-play 冲突)

libraryDependencies ++= Seq(
 // javaJdbc,
  cache,
  javaWs,
 ... unrelated stuff ...
  "org.atmosphere.client" % "javascript" % "2.3.2",
   "org.atmosphere" % "atmosphere-play" % "2.3.0"
)

在 Global.java 中(是的,我知道,但是 Play 文档说你需要它来支持 onRouteRequest):

package controllers;

import org.atmosphere.play.AtmosphereCoordinator;
import play.Application;
import play.GlobalSettings;
import play.api.mvc.Handler;
import play.mvc.Http.RequestHeader;
import org.atmosphere.play.Router;
import controllers.Chat;

import static org.atmosphere.play.AtmosphereCoordinator.*;

public class Global extends GlobalSettings {

    @Override
    public void onStart(Application application) {
        instance().discover(Chat.class).ready();
    }

    @Override
    public void onStop(Application application) {
        instance().shutdown();
    }

    @Override
    public Handler onRouteRequest(RequestHeader request) {
        return Router.dispatch(request);
    }

}

当我编译时:

[coaster-ui] $ compile
[info] Updating {file:/stuff/web/react/}root...
[info] Resolving net.contentobjects.jnotify#jnotify;0.94-play-1 ...
[info] Done updating.
[info] Compiling 8 Scala sources and 9 Java sources to /stuff/web/react/target/scala-2.11/classes...
[error] /stuff/web/react/app/controllers/Global.java:14: error: cannot find symbol
[error] import org.atmosphere.play.Router;
[error]                           ^
[error]   symbol:   class Router
[error]   location: package org.atmosphere.play
[error] 1 error
[error] (compile:compile) javac returned nonzero exit code
[error] Total time: 6 s, completed Jul 13, 2016 11:22:07 AM
[coaster-ui] $ 

我觉得我一定错过了一些非常基本的东西,但似乎无法弄清楚它是什么。任何指针将不胜感激。

谢谢!

Scala org.atmosphere.play.Router 在 2.2.0 中被 AtmosphereHttpRequestHandler.scala 取代。

您可以尝试将 Atmosphere 降级到 2.1.0 以查看它是否可以使用您现有的代码进行编译。聊天示例使用 2.1.0-SNAPSHOT 如果您现有的来源是基于它的,这可能是混淆的来源。