多个scala图书馆在intellij中导致错误?

Kev*_*vin 27 scala intellij-idea

我正在使用intellij 14和scala 2.11.6一起使用home brew和symlink进行安装

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
Run Code Online (Sandbox Code Playgroud)

我试过运行一个简单的hello世界,但遇到了以下问题.

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
Run Code Online (Sandbox Code Playgroud)

编辑:

所以我检查全局库上的编译器类路径,显然有多个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
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么?

Nie*_*els 54

也许你已经习惯了

/usr/local/Cellar/scala/2.11.6/
Run Code Online (Sandbox Code Playgroud)

作为Scala SDK的路径?

使用自制软件安装scala时,该路径不仅包含scala库,还包含带有intellij相关库的符号链接.因此,如果您使用顶级安装目录,intellij将找到两次库.

相反,你应该使用

/usr/local/Cellar/scala/2.11.6/idea/lib
Run Code Online (Sandbox Code Playgroud)


小智 7

这对我有用。我正在使用 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" />
Run Code Online (Sandbox Code Playgroud)

所以我删除了重复项,错误消失了。希望这会帮助别人。


leg*_*ira 6

我遇到了与您尝试过的问题相同的问题,该解决方案实际上非常简单,实际上是从项目中删除.idea文件夹,问题是此文件夹中的配置(包含测试,VCS,运行等)被重复两次损坏(可能是因为您更新了Scala版本),一旦您执行了此操作并在Intellij中重新打开了项目,IDEA将为您生成一个全新的配置。


Tim*_*sen 0

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

META-INF/MANIFEST.MF
Run Code Online (Sandbox Code Playgroud)

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

Manifest-Version: 1.0
Class-Path:
Implementation-Title: Scala-Library
Implementation-Version: 2.11.4
Run Code Online (Sandbox Code Playgroud)

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