多个scala库导致intellij出错?

多个scala库导致intellij出错?,scala,intellij-idea,Scala,Intellij Idea,我使用的是intellij 14和scala 2.11.6,使用的是家用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/s

我使用的是intellij 14和scala 2.11.6,使用的是家用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
我试着运行一个简单的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 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类的哪个版本。

可能您使用了

/usr/local/Cellar/scala/2.11.6/
作为Scala SDK的路径

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

相反,你应该使用

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

我也遇到了这个错误。我找到的修复方法是删除intellij生成的.iml文件中重复的scala库


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

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

在sbt中删除Scala库的多个版本,留下一个。

删除build.sbt中的以下行:

...

scalaVersion := "2.13.0"

...

如果出现类似症状,请尝试重新构建并再次运行它,但要在
Ubuntu
机器上运行,不要使用
brew

我使用
/usr/share/sbt/bin/sbt-launch.jar
作为启动器。为了解决上述问题,我必须清除相关Scala项目的目录1)
project
、2)
target
和3)
。idea
,在IntelliJ中进行sbt刷新(
View
-
工具窗口
sbt
,点击
重新导入所有sbt项目
图标),然后重建所有模块

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

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

.idea/libraries/
文件夹中,我有两个文件:
sbt_uuuorg\u scala\u lang\u scala\u library\u 2\u 13\u 0\u jar.xml
sbt_uuorg\u scala\u lang\u scala\u library\u 2\u 13\u 0\u 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" />

因此,我删除了重复项,错误消失了。 希望这能帮助其他人。

这对我来说很有用: 构思中

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


重新启动IDEA

2019更新。。。我正在用SBT2.13.1运行UbuntuLinux和IntellijCommunity2019.1,但得到了完全相同的错误。我还发现,如果我使用“runMain package.MyClass”直接从sbt构建,它会工作,所以我知道这一定是一个IntelliJ问题,而不是一个“真正”的问题

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

其中有一个XML块,在该块中,有两个条目被复制: 我首先注意到scala库,删除它之后,出现了关于scala编译器副本的错误报告。
删除两个副本后,我的构建现在开始工作。

要解决此问题,请转到intellij中的project structure并转到全局库 应该是这样的

之后,点击-标记移除所有scala SDK

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


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

您的系统上是否安装了另一个版本的scala?我确实
brew卸载了scala
,并且
brew安装了带有文档的scala
不知道这是否导致从您的系统卸载scala,如果显示未找到scala命令,则运行scala命令,这意味着它已完全取消安装,然后再次安装。是的,我尝试了
brew卸载scala
并再次在终端中运行scala,但它没有运行scala,因此我认为没有重复的Shift+CTRL+ALT+S,然后从库中删除额外的scala jar。这假设您是从IDE构建的。如何更改:文件>项目结构>全局库>+>Scala SDK>浏览>选择/usr/local/cillar/Scala/your version/idea/lib尝试了以上所有答案,只有这个对我有效。谢谢。:)这对我有用+1.