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

时间:2015-01-01 13:26:13

标签: scala gradle scala-ide scala-swing

我是学习Scala的初学者。我在Windows 8.1上,使用Scala IDE 4.0.0Gradlescalaeclipse插件创建项目,我想在其中使用scala.swing和{{ 3}}包。 我在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
  4. 然后,我在Foo.scala第2行收到错误,该错误为object swing is not a member of package scala。左侧面板上的Referenced Libraries列表仅显示jmf-2.1.1e.jar的{​​{1}},如下图所示

    object swing is not a member of package scala

    javax.media

    <<.classpath>>

    我试图配置Eclipse的构建路径并手动添加<?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> ,这可以正常工作,但是每次运行Gradle构建脚本时我都必须这样做。请建议为什么scala-swing.jar没有被Gradle导入,以及如何修复它。


    这是运行scala-swing-something.jar后的日志消息:

    $ gradle dependencies

2 个答案:

答案 0 :(得分: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

所有依赖项都有效!

答案 1 :(得分:0)

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

您可以通过运行

进行检查
$ gradle dependencies

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