我在构建scala代码时遇到gradle问题。
$ gradle makeJar
错误:org.gradle.api.tasks.TaskExecutionException:
任务执行失败':compileScala'。
引起:java.lang.NoClassDefFoundError:scala / Function1
$ gradle -v
Gradle版本 - 1.6
groovy - 1.8.6
Ant - 1.8.4
常春藤 - 2.2.0
jvm - 1.7.0_55
操作系统 - Linux 2.6x
sourceCompatibility = '1.6'
apply plugin: 'scala'
def mypath = 'file://'+new File('test/lib').absolutePath
repositories {
flatDir dirs:"${mypath}"
}
configurations{
scalaPackage
}
sourceSets{
main{
scala{
srcDirs = ['test/src/scala']
}
}
}
dependencies {
compile fileTree(dir: mypath, includes: ['*.jar'])
}
task sourcePath{
sourceSets.main.scala.srcDirs = sourceSets.main.scala.srcDirs
sourceSets.main.java.srcDirs = []
}
task makeJar(type: Jar, dependsOn: compileScala){
archivename = "mytest.jar"
destinationDir = file("test/oplib")
from "build/classes"
classpath = configurations.scalaPackage
}
compileScala.dependsOn sourcePath
=============================================== ===========
这里,我的scala源代码出现在 - ./test/src/scala/test.scala
scala jar文件存在于 - ./test/lib
中预期输出位置 - ./test/oplib
build.gradle文件是否有任何错误,可能导致此错误。请建议。
非常感谢,Pralay
答案 0 :(得分:0)
我带着你的build.gradle
文件并使用带Gradle版本2.3的Gradle Wrapper启动它
首先使用gradlew
然后我做了3次更正:
apply plugin: 'scala'
sourceCompatibility = '1.6'
def mypath = 'file://'+new File('test/lib').absolutePath
repositories {
flatDir dirs:"${mypath}"
}
configurations{
scalaPackage
}
sourceSets{
main{
scala{
srcDirs = ['test/src/scala']
}
}
}
dependencies {
compile fileTree(dir: mypath, includes: ['*.jar'])
}
task sourcePath{
sourceSets.main.scala.srcDirs = sourceSets.main.scala.srcDirs
sourceSets.main.java.srcDirs = []
}
task makeJar(type: Jar, dependsOn: compileScala){
archiveName = "mytest.jar"
destinationDir = file("test/oplib")
from "build/classes"
// classpath = configurations.scalaPackage
}
compileScala.dependsOn sourcePath
sourceCompatibility
archiveName
archivename
版本
classpath
然后我运行gradlew tasks
和gradlew makeJar
而没有错误。
答案 1 :(得分:0)
Scala项目需要声明一个scala-library依赖项 在build.gralde文件中添加:
repositories {
mavenCentral()
}
dependencies {
compile 'org.scala-lang:scala-library:2.11.1'
}
答案 2 :(得分:0)
如果您使用spark-core_2.11版本1.2.0,则可以按如下方式定义依赖项:
repositories {
mavenCentral()
}
dependencies {
compile 'org.apache.spark:spark-core_2.11:1.2.0'
}
此依赖项具有Scala
org.scala-lang / scala-library / from 2.11.2 to 2.11.7
作为间接依赖参见