无法在 Scala IDE 中通过 Gradle 添加 scala swing 依赖项

Cannot add scala swing dependency via Gradle in Scala IDE

我是 Scala 的初学者。我在 Windows 8.1,使用 Scala IDE 4.0.0 and Gradle with scala and eclipse plugins to create a project, in which I want to use scala.swing and javax.media 包。 我在 build.gradle 中添加了两个库作为依赖项,只有 javax.media 有效。

我做的步骤是:

  1. 按如下方式创建文件夹和文件

    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 {
    }
    
  2. 使用命令行,导航到 foo 和 运行 gradle eclipse

  3. 在 Scala IDE 中,执​​行 import -> General -> Existing Projects into Workspace -> Browse -> Foo

然后,我在第 2 行 Foo.scala 处收到一个错误,显示为 object swing is not a member of package scala。而左侧面板的Referenced Libraries列表只显示jmf-2.1.1e.jarjavax.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 导入,以及如何修复它。


这是 运行ning $ 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

看起来 Gradle 在生成 Eclipse 文件时无法解析 org.scala-lang:scala-swing:2.10.4 依赖项。我使用 IntelliJ,它做同样的事情 - 一切看起来都工作正常,但缺少依赖项 - 非常令人沮丧。

您可以通过运行

查看
$ gradle dependencies

并检查 scala-swing 是否得到正确解析。我检查了 Maven Central,你肯定已经正确列出了依赖项。如果这没有显示错误,请尝试清理您的项目文件并重新生成。

我遇到了同样的问题。我认为这是 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

所有依赖项都有效!