首页 文章

Intellij在Java中错误地指示了Akka代码的错误

提问于
浏览
0

这是设置:

  • IntelliJ 13.1.2(也尝试过13.1.1)

  • Akka 2.3.2

  • Java 1.8(也尝试过Java 1.7)

  • Scala库2.11(也试过2.10)

  • Scala IntelliJ插件0.35.683

  • Gradle 1.11(IntelliJ正在使用相同的安装)

我正在尝试编写一些Java代码来做一些Akka的东西 - 创建Actors,发送消息等等 . 但是,有两段代码在IntelliJ中抛出类型错误,但在命令行编译时工作得很好,我不知道如何解决它 .

  • 未来#onSuccess()

我有一个这样的电话:

Future<Iterable<Object>> sequence = Futures.sequence(...);
sequence.onSuccess(new PrintResult<Iterable<Object>>(), getContext().dispatcher());

其中PrintResult的定义与此处相同:http://doc.akka.io/docs/akka/2.3.2/java/futures.html(即PrintResult扩展OnSuccess)

但是,我在PrintResult上的IntelliJ中得到一个持久的红色下划线:

Future中的onSuccess(scala.PartialFunction,java.lang.Object>,ExecutionContext)无法应用于(PrintResult>,ExecutionContextExecutor)

  • 我有一个与日志相关的方法,可以简化为:
public void log(LoggingAdapter adapter, Logging.LogLevel level, String message) {
    adapter.log(level, message);
}

IntelliJ不抱怨 . 但是如果我尝试在命令行上构建它,javac会抱怨: error: incompatible types: LogLevel cannot be converted to int . 添加level.asInt()会使命令行错误消失,但现在IntelliJ抱怨adapter.log(level,message)不会为某个级别获取int .


有什么想法可以解决问题并使IntelliJ停止抱怨?

1 回答

  • 0

    这看起来像一个IntelliJ Scala插件错误,简单明了 . 官方的bug跟踪器中有很多错误match这个一般描述,都是"good code red"或类似的 . 所以我会从那里开始,如果需要可能会打开一个bug .

相关问题