Версия Scala и инфраструктуры сохранения несовместима

Я пытаюсь использовать slick и squeryl framework для сохранения данных с помощью scala. Я не хочу использовать платформу Play, а только структуру сохранения, но когда я импортирую гладкий (или squeryl) файл jar, я столкнулся с проблемой ниже:

slick_2.10.1-2.0.0-M1.jar of <project_name> build path is cross-compiled with an incompatible version of Scala (2.10.1). In case this report is mistaken, this check can be disabled in the compiler preference page.   

Я использовал scala jar (2.11.6) в плагине scala в Eclipse, и я могу запустить простое приложение scala. Я также могу получить доступ к СУБД mysql с помощью jdbc. Эта проблема возникает, когда я импортирую гладкие (или скверильные) файлы jar. Это потому, что фреймворк не поддерживает scala 2.11? Является ли понижение версии scala решением? Если да, может ли кто-нибудь указать мне, как понизить версию scala под плагином Eclipse scala. Большое спасибо


person Sy Z    schedule 26.05.2015    source источник


Ответы (2)


Если вы используете scala 2.11, вам нужно использовать эту зависимость для slick:

<dependency>
  <groupId>com.typesafe.slick</groupId>
  <artifactId>slick_2.11</artifactId>
  <version>3.0.0</version>
</dependency>
person igreenfield    schedule 27.05.2015
comment
Я не использовал maven для сборки, поэтому я импортировал все библиотеки, включенные в этот pom.xml, и теперь он работает хорошо. Спасибо. - person Sy Z; 27.05.2015
comment
Кстати, как должен выглядеть pm.xml, если я попытаюсь импортировать scala 2.11? - person Sy Z; 27.05.2015
comment
‹dependency› ‹groupId›org.scala-lang‹/groupId› ‹artifactId›scala-library‹/artifactId› ‹version›2.11.4‹/version› ‹/dependency› - person igreenfield; 28.05.2015

Предыдущий ответ должен решить вашу проблему с slick. Если вы хотите использовать Squeryl, зависимость должна быть

<dependency>
    <groupId>org.squeryl</groupId>
    <artifactId>squeryl_2.11</artifactId>
    <version>0.9.6-RC3</version>
</dependency>

Или, если вы хотите использовать 0.9.5

<dependency>
    <groupId>org.squeryl</groupId>
    <artifactId>squeryl_2.11</artifactId>
    <version>0.9.5-7</version>
</dependency>

Библиотеки в Scala бинарно совместимы только с младшими версиями Scala, для которых они были скомпилированы. Вы увидите, что в этих примерах правильная версия scala добавляется к идентификатору артефакта со знаком подчеркивания.

Если у вас есть возможность использовать SBT вместо Maven, я бы порекомендовал это. SBT может выбрать для вас подходящую версию, когда вы ссылаетесь на зависимость, как показано ниже.

libraryDependencies += "org.squeryl" % "squeryl_2.11" % "0.9.6-RC3"
person Dave Whittaker    schedule 27.05.2015