Несколько scala libraies, вызывающих ошибку в intellij?

Я использую 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

Я попробовал запустить простой мир привет, но столкнулся с следующей проблемой.

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

Edit:

Итак, я проверяю путь класса компилятора в глобальных библиотеках и, видимо, существует несколько 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

Кто-нибудь знает, почему?

Ответ 1

Возможно, вы использовали

/usr/local/Cellar/scala/2.11.6/

как путь для Scala SDK?

При установке Scala с homebrew этот путь будет содержать не только библиотеки Scala, но также символическую ссылку с соответствующими библиотеками для intellij. Поэтому, если вы используете каталог установки верхнего уровня, intellij найдет библиотеки дважды.

Вместо этого вы должны использовать

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

Ответ 2

У меня была такая же проблема, как вы экспериментировали, и решение, на самом деле очень простое, фактически стирало папку .idea из проекта, проблема в том, что конфигурация внутри этой папки (содержащая настройки, например, для теста, VCS, прогоны и т.д.) Повреждается двойными записями (возможно, потому что вы обновляете версию Scala), как только вы это сделаете, и снова запустите проект в Intellij, IDEA создаст новую новую конфигурацию для вас.

Ответ 3

Я также столкнулся с этой ошибкой. Исправление, которое я нашел, это удалить дублируемую scala -библиотеку в файле .iml, сгенерированном intellij.

В основном я нашел соответствующий .iml файл, grepping версии scala и обнаружил, что в этом файле две scala -библиотека. Я удалил версию scala 2.11, а затем она работает.

Ответ 4

Это сработало для меня. Я использую Idea 2019.2.2 и Windows 10.

В папке .idea/libraries/ у меня было два файла: sbt__org_scala_lang_scala_library_2_13_0_jar.xml и sbt__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" />

Поэтому я удалил дубликаты, а ошибки исчезли. Надеюсь, это поможет кому-то еще.

Ответ 5

У вас есть JAR файлы из нескольких версий scala-library.jar. Чтобы ошибка исчезла, вам придется удалить дубликаты. Чтобы выяснить, какую версию вы хотите сохранить, вы можете просмотреть файл манифеста внутри каждого JAR:

META-INF/MANIFEST.MF

Внутри файла манифеста вы должны увидеть что-то вроде этого:

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

Ошибка происходит, потому что IntelliJ не может определить, какую версию данного класса Scala использовать.

Ответ 6

Удалите несколько версий scala-библиотеки в sbt, оставив одну.

Ответ 7

Удалите следующую строку в build.sbt:

...

scalaVersion := "2.13.0"

...

Попробуйте восстановить и запустить его снова

Ответ 8

Наличие аналогичных симптомов, но на машине Ubuntu, не использующей brew:

Я использую /usr/share/sbt/bin/sbt-launch.jar в качестве запуска. Чтобы исправить упомянутую проблему, мне пришлось очистить каталоги 1) project, 2) target и 3) .idea соответствующих проектов Scala, выполнив обновление sbt в IntelliJ (View - Tool Windows). → sbt, нажмите значок Reimport all sbt projects) и затем перестройте все модули.

В качестве последнего шага, когда ошибка возникает дальше, переключитесь на оболочку/терминал Ubuntu и выполните sbt clean compile в папке проблемного проекта. Исправьте проблемы компиляции, если они происходят. Если это не помогает, измените scalaVersion в build.sbt, например. от 2.12.9 до 2.12.8 (ошибка чаще возникает с 2.12.9), удалите определение scalaOrganization (но сохраните organization). Повторите sbt refresh IntelliJ. О, МОЙ БОГ.

Ответ 9

Обновление 2019... Я использую Ubuntu Linux и IntelliJ сообщество 2019.1 с sbt 2.13.1 и получил точно такую же ошибку. Я также обнаружил, что если я собирал напрямую из sbt с помощью "runMain package.MyClass", это работало, поэтому я знал, что это должна быть проблема IntelliJ, а не "настоящая" проблема.

Во всяком случае, я нашел файл .idea/library/sbt.. много сумасшедших длинных имен... scala_library_2_13_1_jar.xml.

В нем был блок XML, и в этом блоке были дублированы две записи: Сначала я заметил библиотеку scala, и после ее удаления появилось сообщение об ошибке с дубликатом компилятора scala. После удаления обоих дубликатов моя сборка теперь работает.

Ответ 10

Это сработало для меня: В ИДЕЕ

Preferences → Plugins → Scala → Update

Перезапустите ИДЕЮ