【问题标题】:scala packages import error in IntelliJ IDEAIntelliJ IDEA中的scala包导入错误
【发布时间】:2022-01-27 15:20:59
【问题描述】:

我正在尝试在 MacBook 上的 IntelliJ IDEA(社区 2019.2)中编译 scala 代码。我的 Scala 版本:2.13.0。

在代码中:

import scala.collection.JavaConverters._

变灰,“JavaConverters._”被划掉。

 import scala.collection.JavaConversions._

“JavaConversions._”标记为红色,表示无法解析。

我也试过了

   import scala.jdk.CollectionConverters

它也是灰色的(这意味着它没有被使用)

但是,我可以在命令行中做同样的事情。

我在 IntelliJ IDEA 中遗漏了什么吗?

【问题讨论】:

  • 未使用,因为你错过了最后的._。您想从CollectionConverters 导入所有(隐式)内容。
  • 我使用了“import scala.jdk.CollectionConverters._”,但在 IntelliJ IDEA 中它是灰色的(仍未使用)。

标签: java scala intellij-idea sbt scala-java-interop


【解决方案1】:

在 repl 中的行为是一样的

[IJ]sbt:scala213demo1> console
[info] Starting scala interpreter...
Welcome to Scala 2.13.0 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_162).
Type in expressions for evaluation. Or try :help.

scala> import scala.collection.JavaConversions._
                               ^
       error: object JavaConversions is not a member of package collection

scala> import scala.collection.JavaConverters._
import scala.collection.JavaConverters._

scala> import scala.jdk.CollectionConverters._
import scala.jdk.CollectionConverters._

如果 repl 中的行为对您来说不同,那么您可以使用不同版本的 scala 开始 repl。

在 2.13 中正确的是

import scala.jdk.CollectionConverters._

scala.collection.JavaConverters._ 已弃用,scala.collection.JavaConversions 即使在 2.12 中也已弃用,现在不可用。

【讨论】:

  • 我使用了“import scala.jdk.CollectionConverters._”,但在 IntelliJ IDEA 中它是灰色的(仍未使用)。
  • @user3448011 谁在乎 IntelliJ 高亮,重要的是代码是否编译。
  • 不,它不编译。错误示例:toList 不是 java.util.list 的成员。
  • @user3448011 为什么是.toList?应该是.asScalagithub.com/scala/scala/blob/2.13.x/src/library/scala/collection/…
  • @user3448011 或.asScala.toList
【解决方案2】:

Stack answer 的第一部分帮助我了解了sbt 依赖管理。使用该结构,我查看了Build 选项卡并阅读了有关sbt 下载依赖项时出错的错误消息。从该错误消息中,我了解到我已将 Scala 版本作为包名称的一部分:

错误示例: azure-eventhubs-spark_2.12

更正示例: azure-eventhubs-spark

这是因为build.sbt 文件包含一个名为ThisBuild/scalaVersion := "2.12.15" 的变量定义,它知道如何解析特定的Scala 版本并将其附加到包名称中。

LibraryDepdencies 的上下文中使用上面的示例,它是如何查找 1 个依赖库的:

不正确的例子: "com.microsoft.azure" %% "azure-eventhubs-spark_2.12" % "2.3.21" % "provided"

更正示例: "com.microsoft.azure" %% "azure-eventhubs-spark" % "2.3.21" % "provided"

使用正确的包名称引用更新您的build.sbt 文件后,在Build 选项卡内,右键单击您的项目并选择Reload sbt Project。它将重新加载更新的build.sbt 文件定义并重新尝试为您下载依赖包并解决您的编辑器中的红色字体,该类无法解决错误。

【讨论】:

    猜你喜欢
    • 2019-01-12
    • 2020-10-18
    • 1970-01-01
    • 2013-01-05
    • 1970-01-01
    • 1970-01-01
    • 2012-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多