我是一个初学者,学习Scala。我在Windows8.1上,使用Scala 4.0.0和Gradle以及斯卡拉和月食插件来创建一个项目,其中我想使用scala.swing和javax.media包。我在build.gradle中添加了两个库作为依赖项,只有javax.media工作.
我所做的步骤是:
build.gradle是Gradle构建脚本,Foo.scala是Scala脚本,如下所示
<<build.gradle>>
应用插件:'scala‘应用插件:'eclipse’存储库{ mavenCentral() }依赖{编译'org.scala-lang:scala-swing:2.10.4‘编译'javax.media:jmf:2.1.1e’}
<<Foo.scala>>
导入javax.media.Player //no错误导入scala.swing._ //错误:对象swing不是scala类Foo {}包的成员foo并运行gradle eclipseimport -> General -> Existing Projects into Workspace -> Browse -> Foo然后,我在Foo.scala的第2行得到一个错误,它读取object swing is not a member of package scala。左边面板上的Referenced Libraries列表仅显示javax.media的jmf-2.1.1e.jar,如下图所示

<<.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发布于 2015-03-19 13:43:58
我也有过同样的问题。我认为这是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依赖项,它的名称和版本与我指定的名称和版本不同。复制并粘贴到您的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所有依赖项都能工作!
发布于 2015-01-01 13:33:15
这看起来像Gradle在生成org.scala-lang:scala-swing:2.10.4文件时无法解决它的依赖关系。我使用了IntelliJ,它做了同样的事情--看起来一切正常,但是缺少依赖--非常令人沮丧。
你可以通过运行
$ gradle dependencies并检查scala-swing是否被正确解析。我检查了Maven central,您肯定正确地列出了依赖项。如果没有显示错误,请尝试清理项目文件并重新生成。
https://stackoverflow.com/questions/27731210
复制相似问题