2015-06-18 4 views
0

Я столкнулся с одной проблемой с градиентом при создании кода scala.Ошибка Gradle при построении кода scala

$ Gradle makeJar

Ошибка: org.gradle.api.tasks.TaskExecutionException:

Не удалось завершить выполнение задачи по ': compileScala.

Вызванный: java.lang.NoClassDefFoundError: Скала/Function1

$ Gradle -v

Gradle версия - 1,6

заводной - 1.8.6

Ant - 1.8.4

плющ - 2.2.0

JVM - 1.7.0_55

OS - Linux 2.6x

Мой файл build.gradle ниже -

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

я взять build.gradle файл и запустить его с Gradle обертке с Gradle Версия 2,3

первый раз с 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 
  1. Переместить линию sourceCompatibility после Scala Plugin Импорт
  2. Написать archiveName instaed из archivename
  3. Закомментируйте classpath

Тогда я бегу gradlew tasks и gradlew makeJar без ошибок.

+0

Я попытался с внесенными вами изменениями, но в результате получилась та же ошибка, что и раньше, в Gradle 1.6. –

0

Проекты Scala должны объявлять зависимость scala-библиотеки.
Добавьте это в свою сборку.gralde Файл:

repositories { 
    mavenCentral() 
} 

dependencies { 
    compile 'org.scala-lang:scala-library:2.11.1' 
} 
+0

Привет, я пробовал с вышеуказанным вариантом. Но он по-прежнему терпит неудачу с той же ошибкой. Я предполагаю, что в моем случае scala имеет искру (версия 1.2.0). Я попытался настроить SCALA_HOME на искры, но это не сработало. –

0

При использовании искрового core_2.11 Version 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 

как косвенная зависимость см.

Maven Repository Search for spark-core

+0

У нас есть нижняя банка для искры для CDH 5.3.2 - spark-assembly-1.2.0-cdh-5.3.2- <версия hadoop> .jar. Итак, я пробовал с ниже строки в зависимости - скомпилировать 'org.apache.spark: soark-assembly: 1.2.0-cdh5.3.2'; но, к сожалению, сценарий gradle не смог распознать эту ссылку и выбросил мне ошибку, поскольку «не смог найти зависимость. Я сохранил эту банку в своем пути сборки, и я могу запустить искровой оболочку или исправить, чтобы заставить меня думать, что искровая сборка jar правильно ссылается в пути сборки. –

Смежные вопросы