【问题标题】:"not found: value classOf" error when building scala in IntelliJ IDEA, but builds correctly in maven在 IntelliJ IDEA 中构建 scala 时出现“未找到:value classOf”错误,但在 maven 中正确构建
【发布时间】:2013-07-11 21:17:44
【问题描述】:

我已经编写了一小段测试代码,并正在使用 IntelliJ IDEA 12 CE 对其进行编译

import com.twitter.common.zookeeper.ZooKeeperClient
import org.mockito.Mockito

    class MyResourceSpec { 
      val zkClient = mock(classOf[ZooKeeperClient])
      ...
    }

我收到以下错误:

not found: value classOf
  val zkClient = mock(classOf[ZooKeeperClient])
                 ^

但是我能够使用 mvn compile 成功构建项目。此外,我在同一目录“MyOtherResourceSpec.scala”中有另一个测试文件,其中包含完全相同的代码行。

对于为什么这在 IDEA 中不能正确构建有什么想法吗?

我尝试过的事情:

  • 一位同事建议 IDEA 可能无法将其识别为 scala 文件,我尝试单击顶层项目,然后 点击 Maven > 重新导入。

  • 重新启动 IntelliJ

  • 从“MyOtherResourceSpec.scala”复制所有导入以防万一丢失

  • 使用 Mockito.mock(classOf[ZooKeeperClient])

【问题讨论】:

    标签: scala maven intellij-idea mockito


    【解决方案1】:

    好的,我通过单击 File > Invalidate Caches 并重新启动 IntelliJ 解决了这个问题。然后我不需要导入 Predef.classOf。

    我还必须删除以下导入语句:

    import scala.Predef.String
    

    【讨论】:

    • 确实,如果您从Predef 导入任何特定的东西,其余部分不会自动导入。在我的例子中,IntelliJ 自动从 Predef 添加了这样的导入,这导致该文件中的许多其他事情都失败了。
    【解决方案2】:

    尝试导入Predef.classOf,这应该会有所帮助,或者直接写Predef.classOf。 IDEA使用自己的基于sbt的外部编译器,可能有一些问题

    【讨论】:

    • 为什么投反对票?似乎是一种合理的方法。
    • 哦 - 它对我有用!我在 OP 中遇到了问题,并且使缓存无效——除了让我痛苦的本地历史闪电战之外——没有奏效。这做到了。我不尊重这个网站上的一些反对者。
    【解决方案3】:

    Maven 处于离线模式

    我从版本控制更新了我的项目,其中包括对 Scala 版本的更新。因为我的 Intellij Maven 处于离线模式,所以它无法下载新的 Scala 工件。

    让 Intellij Maven 重新上线可能会解决问题(对于像我这样的其他人)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-19
      • 2018-06-24
      • 2018-05-27
      • 1970-01-01
      • 1970-01-01
      • 2020-07-15
      相关资源
      最近更新 更多