【问题标题】:Multiple scala libraies causing error in intellij?多个scala库导致intellij错误?
【发布时间】:2020-02-10 16:48:07
【问题描述】:

我使用 intellij 14 和 scala 2.11.6 安装使用 home brew 和符号链接使用

ln -s /usr/local/Cellar/scala/2.11.6/libexec/src /usr/local/Cellar/scala/2.11.6/src
ln -s /usr/local/Cellar/scala/2.11.6/libexec/lib  /usr/local/Cellar/scala/2.11.6/lib
mkdir -p /usr/local/Cellar/scala/2.11.6/doc/scala-devel-docs
ln -s /usr/local/Cellar/scala/2.11.6/share/doc/scala /usr/local/Cellar/scala/2.11.6/doc/scala-devel-docs/api

我尝试运行一个简单的 hello world,但遇到了以下问题。

Error:scalac: Multiple 'scala-library*.jar' files (scala-library.jar, scala-library.jar, scala-library.jar) in Scala compiler classpath in Scala SDK scala-sdk-2.11.6

编辑:

所以我检查了全局库上的编译器类路径,显然有多个 scal-library.jar

file:///usr/local/Cellar/scala/2.11.6/idea/lib/scala-library.jar
file:///usr/local/Cellar/scala/2.11.6/lib/scala-library.jar
file:///usr/local/Cellar/scala/2.11.6/libexec/lib/scala-library.jar

有人知道为什么吗?

【问题讨论】:

  • 您的系统上是否安装了另一个版本的 scala?
  • 我做了brew uninstall scalabrew install scala with-docs 不知道这是否是导致问题的原因
  • 尝试从你的系统卸载scala,如果显示没有找到scala命令,则运行scala命令,这意味着它完全卸载,然后重新安装。
  • 是的,我再次尝试brew uninstall scala 并在终端中运行 scala,但它不运行 scala,所以我认为没有重复
  • SHIFT+CTRL+ALT+S,然后从您的库中删除多余的 scala JAR。这假设您是从 IDE 构建的。

标签: scala intellij-idea


【解决方案1】:

也许你用过

/usr/local/Cellar/scala/2.11.6/

作为 Scala SDK 的路径?

当您使用 homebrew 安装 scala 时,该路径不仅包含 scala 库,还包含与 intellij 相关库的符号链接。所以如果你使用顶级安装目录,intellij 会找到两次库。

你应该使用

/usr/local/Cellar/scala/2.11.6/idea/lib

【讨论】:

  • 如何更改:文件 > 项目结构 > 全局库 > + > Scala SDK > 浏览 > 选择 /usr/local/Cellar/scala/your version/idea/lib
【解决方案2】:

我遇到的问题与您尝试的相同,解决方案实际上非常简单,实际上是从项目中删除 .idea 文件夹,问题是该文件夹内的配置(包含例如用于测试的设置、VCS、运行等)被双重条目损坏(可能是因为您更新了 Scala 版本),一旦您这样做并在 Intellij 中重新打开项目,IDEA 将为您生成全新的配置。

【讨论】:

    【解决方案3】:

    这对我有用。 我正在使用 Idea 2019.2.2 和 Windows 10。

    .idea/libraries/ 文件夹中,我有两个文件:sbt__org_scala_lang_scala_library_2_13_0_jar.xmlsbt__org_scala_lang_scala_library_2_13_0_jar2.xml

    我删除了第二个文件。 然后我打开第一个发现有重复的行:

        <root url="file://$USER_HOME$/AppData/Local/Coursier/cache/v1/https/repo1.maven.org/maven2/jline/jline/2.14.6/jline-2.14.6.jar" />
        <root url="file://$USER_HOME$/AppData/Local/Coursier/cache/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-compiler/2.13.0/scala-compiler-2.13.0.jar" />
        <root url="file://$USER_HOME$/AppData/Local/Coursier/cache/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-compiler/2.13.0/scala-compiler-2.13.0.jar" />
        <root url="file://$USER_HOME$/AppData/Local/Coursier/cache/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.0/scala-library-2.13.0.jar" />
        <root url="file://$USER_HOME$/AppData/Local/Coursier/cache/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.0/scala-library-2.13.0.jar" />
        <root url="file://$USER_HOME$/AppData/Local/Coursier/cache/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-reflect/2.13.0/scala-reflect-2.13.0.jar" />
    

    所以我删除了重复项,错误消失了。 希望这对其他人有帮助。

    【讨论】:

      【解决方案4】:

      我也遇到了这个错误。我发现的修复是删除由 intellij 生成的 .iml 文件中重复的 scala-library。

      基本上我通过 grepping scala 版本找到了相关的 .iml 文件,并在该文件中找到了两个 scala-library。我删除了 scala 2.11 版本,然后它就可以工作了。

      【讨论】:

        【解决方案5】:

        在 build.sbt 中删除以下行:

        ...
        
        scalaVersion := "2.13.0"
        
        ...
        

        尝试重新构建并再次运行它

        【讨论】:

        • 尝试了以上所有答案,只有这对我有用。谢谢。 :)
        【解决方案6】:

        2019 更新...我正在使用 sbt 2.13.1 运行 Ubuntu Linux 和 IntelliJ 社区 2019.1,并得到完全相同的错误。我还发现,如果我使用“runMain package.MyClass”直接从 sbt 构建它就可以了,所以我知道这一定是 IntelliJ 问题,而不是“真正的”问题。

        无论如何,我找到了文件 .idea/libraries/sbt.. 很多疯狂的长名称... scala_library_2_13_1_jar.xml。

        其中有一个 XML 块,在该块中,有两个条目重复: 我首先注意到了 scala-library ,在删除它之后,错误报告也出现了关于 scala-compiler 副本的错误报告。 删除两个重复项后,我的构建现在可以工作了。

        【讨论】:

          【解决方案7】:

          要解决此问题,请转到 intellij 中的项目结构并转到全局库 应该是这样

          然后通过点击 - 标记删除所有 scala SDK

          接下来,单击 + 并选择要添加的 Scala SDK 版本

          之后请确保应用更改并重新运行程序

          【讨论】:

            【解决方案8】:

            您拥有来自多个版本的 scala-library.jar 的 JAR 文件。为了使错误消失,您必须删除重复项。要确定要保留哪个版本,您可以查看每个 JAR 中的清单文件:

            META-INF/MANIFEST.MF
            

            在清单文件中,您应该会看到如下内容:

            Manifest-Version: 1.0
            Class-Path:
            Implementation-Title: Scala-Library
            Implementation-Version: 2.11.4
            

            发生错误是因为 IntelliJ 无法确定要使用给定 Scala 类的哪个版本。

            【讨论】:

              【解决方案9】:

              在 sbt 中删除多个版本的 scala-library,留下一个。

              【讨论】:

                【解决方案10】:

                有类似的症状,但在Ubuntu机器上,没有使用brew

                我使用/usr/share/sbt/bin/sbt-launch.jar 作为启动器。为了解决上述问题,我不得不清除相关 Scala 项目的目录 1) project、2) target 和 3) .idea,在 IntelliJ 中进行 sbt refresh (View - Tool Windows -> sbt,点击Reimport all sbt projects 图标),然后重建所有模块。

                作为最后一步,当错误进一步发生时,切换到 Ubuntu shell / 终端,并在有问题的项目文件夹中执行 sbt clean compile。如果出现某些问题,请修复编译问题。如果这没有帮助,请将scalaVersion 更改为build.sbt,例如从2.12.92.12.8(使用2.12.9 更常发生错误),删除scalaOrganization 定义(但保留organization)。重复 IntelliJ 的 sbt refresh。天哪。

                【讨论】:

                  【解决方案11】:

                  这对我有用: 在 IDEA 中

                  首选项 -> 插件 -> Scala -> 更新

                  重启IDEA

                  【讨论】:

                    猜你喜欢
                    • 2020-10-18
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2017-05-22
                    • 2011-11-12
                    • 2017-01-28
                    • 1970-01-01
                    • 2020-03-15
                    相关资源
                    最近更新 更多