IntelliJ不停地删除Akka教程中的context.dispatcher导入

7

我正在跟随 akka-in-action 教程学习,在第二章中,有一个类 (https://github.com/RayRoestenburg/akka-in-action/blob/master/chapter2/src/main/scala/com/goticks/RestInterface.scala):

trait RestApi extends HttpService with ActorLogging { actor: Actor =>
  import context.dispatcher
  import com.goticks.TicketProtocol._
  ...

import context.dispatcher从未被使用,但它被定义了注释:

  /**
   * Returns the dispatcher (MessageDispatcher) that is used for this Actor.
   * Importing this member will place an implicit ExecutionContext in scope.
   */
  implicit def dispatcher: ExecutionContextExecutor

然而,IntelliJ一直将该导入标记为“未使用”,并在“优化导入”时删除它,导致错误value pipeTo is not a member of scala.concurrent.Future[Any]

有没有办法告诉IntelliJ这个导入不打算被“使用”,而仅仅是提供一个上下文呢?

或者教程应该更新以不使用这样的“未使用的导入”吗?


Intellij的“优化导入”功能有缺陷。我倾向于在设置中关闭未使用导入的删除,仅在需要添加新导入时使用它。 - lmm
可能是如何防止IntelliJ IDEA删除未使用的包?的重复问题。 - jopasserat
1
不是禁用删除所有未使用包的导入,而是禁用删除那些被“使用”,但是IDEA认为它们“未使用”的导入。 - mirelon
我需要编辑问题以消除“重复备注”框吗? - mirelon
2个回答

15

这看起来像是问题SCL-9326。 IntelliJ 15有一个很好的解决方法:按下alt-enter(在Mac上),然后选择“在此项目中始终使用此导入”。


请注意,您必须禁用“即时优化导入”才能使此功能正常工作。 - smac89

2

进入设置 - 编辑器 - 通用 - 自动导入,将包名添加到“排除导入和自动完成”的列表中enter image description here

您还可以禁用“即时优化导入”,这样它就不会在没有明确请求的情况下删除您的导入


1
嗯,不错的解决方案,但是有单独的“Java”和“Scala”部分。在“Scala”部分中,选项都是相同的,除了“从导入和完成中排除”。 - mirelon
我认为 https://confluence.jetbrains.com/display/IntelliJIDEA/Managing+Imports+in+Scala 上的一些内容可能有所帮助,但似乎并不是这样。 - mirelon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接