为什么IntelliJ似乎两次导入我的Scala库?

时间:2018-07-29 20:28:07

标签: scala intellij-idea

我刚刚开始尝试将scala与IntelliJ一起使用。我按照以下说明创建了一个新项目:

https://docs.scala-lang.org/getting-started-intellij-track/getting-started-with-scala-in-intellij.html

我使用Homebrew安装了scala 2.12.6,并在IntelliJ中创建新的Scala项目时选择了它。

由于某种原因,在“外部库”下,我在scala安装中将每个jar都放置了两次:

IntelliJ_Scala_Libraries

我创建了一个hello世界,当我尝试运行它时,出现此错误:

        IMapJet<String, String> map = jet.getMap("map");

        for(int i = 0; i < 50; i++) {
            map.put("test" + i, "test" + i);
        }

         DistributedStream.fromMap(map)
            .map(entry -> {
                System.out.println("word: " + entry.getKey());
                return entry.getKey().toUpperCase();
            })
            .collect(DistributedCollectors.toIList("sink"))
            .forEach(System.out::println);

但是,在Scala库文件夹中,每个文件夹只有一个jar。

我不确定我在做什么错。我尝试过其他版本的Scala,但是得到了相同的结果。我试图删除其中一个jar,并删除了它的实际唯一副本,所以我不得不重新安装scala。

3 个答案:

答案 0 :(得分:1)

@Zapatilla,

关注此,

单击文件->项目结构;选择模块;选择依赖项

您应该在那里看到scala-sdk-2.12.6。首先选择它,然后单击下面的“-”符号将其删除。

完成后,单击“ +”按钮,然后选择“ 2. Library-> SDK中的Scala”;选择适当的版本,然后单击Apply; Ok。

这应该解决它。

答案 1 :(得分:1)

我刚发现问题。当我右键单击项目浏览器中的库时,我看到了每个jar文件的路径。在scala进行的homebrew的{​​{1}}安装中,似乎有两个包含相同jar的文件夹:

/usr/local/Cellar/scala/<version>

/usr/local/Cellar/scala/<version>/idea/lib

自从我在IntelliJ中导入此路径/usr/local/Cellar/scala/<version>/libexec/lib 以来,两个文件夹中的所有jar均已导入,从而导致重复。

解决方案是仅导入这两个选项之一。现在,我已经将/usr/local/Cellar/scala/<version>设置为仅用作外部库IntelliJ,它似乎可以正常工作!

答案 2 :(得分:0)

我正在使用Windows和intelliJ组合,因为我是scala的新手,所以我遇到了同样的问题,就像往常一样,我在google中搜索并花了很多时间来解决我的问题。

大多数建议是针对linux的,请尝试以下方法,以我为例。

1)检查您的iml文件并验证orderEntry。默认情况下,如果下载sbt,它将包含2组库。我下载了SBT版本1.2.7,默认情况下包含2组库。一个使用2.12.0,另一个使用2.12.7。

2)我的项目iml文件具有scala SDK 2.12.0,这是我遇到问题的原因,我对其进行了编辑,将其更改为2.12.7,它首先自动更改了2.12.7的顺序,并解决了我的问题。 这解决了我的问题。