[英]Cannot add scala swing dependency via Gradle in 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
import -> General -> Existing Projects into Workspace -> Browse -> Foo
然后,我在第2行的Foo.scala遇到錯誤,該錯誤讀取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構建腳本時,都必須這樣做。 請提出為什么Gradle無法導入scala-swing-something.jar
以及如何修復它。
這是運行$ 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
我遇到過同樣的問題。 我認為這是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在生成Eclipse文件時無法解決org.scala-lang:scala-swing:2.10.4
依賴項。 我使用IntelliJ,它做同樣的事情-一切似乎都正常,但是缺少依賴項-非常令人沮喪。
您可以通過運行檢查
$ gradle dependencies
並檢查scala-swing
是否已正確解決。 我檢查了Maven Central,您肯定列出了正確的依賴項。 如果未顯示任何錯誤,請嘗試清除項目文件並重新生成。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.