Невозможно добавить зависимость качания Scala через Gradle в Scala IDE
Я новичок в изучении Scala. Я на Windows 8.1, использую Scala IDE 4.0.0 и Gradle с плагинами scala и eclipse для создания проекта, в котором я хочу использовать пакеты scala.swing и javax.media. Я добавляю обе библиотеки как зависимости в build.gradle, работает только javax.media.
Шаги, которые я сделал:
создавать папки и файлы следующим образом
foo |-src |-main |-scala |-Foo.scala |-build.gradle
где
build.gradle
это скрипт сборки Gradle иFoo.scala
скрипт Scala, как показано ниже<<build.gradle>>
apply plugin: 'scala' apply plugin: 'eclipse' repositories { mavenCentral() } dependencies { compile 'org.scala-lang:scala-swing:2.10.4' compile 'javax.media:jmf:2.1.1e' }
<<Foo.scala>>
import javax.media.Player //no error import scala.swing._ //error: object swing is not a member of package scala class Foo { }
используя командную строку, перейдите к
foo
и бегиgradle eclipse
- в Scala IDE делаем
import -> General -> Existing Projects into Workspace -> Browse -> Foo
Затем я получаю ошибку в Foo.scala, строка 2, которая гласит: object swing is not a member of package scala
, И Referenced Libraries
список на левой панели показывает только jmf-2.1.1e.jar
за javax.media
, как показано на рисунке ниже
<<.classpath>>
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="output" path="bin"/>
<classpathentry kind="src" path="src/main/scala"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER" exported="true"/>
<classpathentry kind="con" path="org.scala-ide.sdt.launching.SCALA_CONTAINER" exported="true"/>
<classpathentry kind="lib" path="C:/Users/mm/.gradle/caches/modules-2/files-2.1/javax.media/jmf/2.1.1e/fe9287a362578bfb8b7b9dba42af0ec80a297abb/jmf-2.1.1e.jar" exported="true"/>
</classpath>
Я попытался настроить путь сборки Eclipse и добавить scala-swing.jar
вручную, что работает нормально, но тогда я должен делать это каждый раз, когда запускаю скрипт сборки Gradle. Пожалуйста, предложите почему scala-swing-something.jar
Gradle не импортировал, и как это исправить.
Это сообщение журнала после запуска $ gradle dependencies
:
$ gradle dependencies
:dependencies
------------------------------------------------------------
Root project
------------------------------------------------------------
archives - Configuration for archive artifacts.
No dependencies
compile - Compile classpath for source set 'main'.
+--- org.scala-lang:scala-swing:2.10.4
| \--- org.scala-lang:scala-library:2.10.4
\--- javax.media:jmf:2.1.1e
default - Configuration for default artifacts.
+--- org.scala-lang:scala-swing:2.10.4
| \--- org.scala-lang:scala-library:2.10.4
\--- javax.media:jmf:2.1.1e
runtime - Runtime classpath for source set 'main'.
+--- org.scala-lang:scala-swing:2.10.4
| \--- org.scala-lang:scala-library:2.10.4
\--- javax.media:jmf:2.1.1e
testCompile - Compile classpath for source set 'test'.
+--- org.scala-lang:scala-swing:2.10.4
| \--- org.scala-lang:scala-library:2.10.4
\--- javax.media:jmf:2.1.1e
testRuntime - Runtime classpath for source set 'test'.
+--- org.scala-lang:scala-swing:2.10.4
| \--- org.scala-lang:scala-library:2.10.4
\--- javax.media:jmf:2.1.1e
zinc - The Zinc incremental compiler to be used for this Scala project.
No dependencies
BUILD SUCCESSFUL
Total time: 11.159 secs
2 ответа
Я была такая же проблема. Я думаю, что это была несовместимость между версией Scala и версией Scala Swing. У меня были эти зависимости:
dependencies {
compile 'org.scala-lang:scala-library:2.11.5'
compile 'org.scala-lang:scala-swing:2.10.4'
}
Чтобы решить эту проблему, добавьте scala-library-all
зависимость вместо:
dependencies {
compile 'org.scala-lang:scala-library-all:2.11.5'
}
Вы можете оставить все как есть, но это добавит все виды зависимостей, которые вам могут не понадобиться. Если вы не хотите этого, вызовите:
gradle dependencies
Он расскажет вам, какие зависимости нашел Gradle. Мой сказал, между прочим:
compile - Compile classpath for source set 'main'.
+--- org.scala-lang:scala-library-all:2.11.5
| +--- org.scala-lang:scala-library:2.11.5
| +--- org.scala-lang.modules:scala-swing_2.11:1.0.1
| | \--- org.scala-lang:scala-library:2.11.0 -> 2.11.5
Обратите внимание на зависимость Scala Swing, имя и версия которой отличается от указанной мной. Скопируйте и вставьте это в свой build.gradle
зависимости:
dependencies {
compile 'org.scala-lang:scala-library:2.11.5'
compile 'org.scala-lang.modules:scala-swing_2.11:1.0.1'
}
И вуаля:
gradle cleanEclipse eclipse
Все зависимости работают!
Похоже, что Gradle не может решить org.scala-lang:scala-swing:2.10.4
зависимость при создании файлов Eclipse. Я использую IntelliJ, и он делает то же самое - все выглядит нормально, но зависимости отсутствуют - очень расстраивает.
Вы можете проверить, запустив
$ gradle dependencies
И проверяя это scala-swing
решается правильно. Я проверил Maven central, и вы определенно правильно указали зависимость. Если это не показывает ошибок, попробуйте очистить файлы проекта и восстановить.