복붙노트

[HADOOP] gradle이있는 groovy hadoop jar-패키지가 존재하지 않습니다 오류

HADOOP

gradle이있는 groovy hadoop jar-패키지가 존재하지 않습니다 오류

Gradle 2.12로 그루비 항아리를 만들려고했습니다. groovy 파일에는 아래와 같이 import 문이 있으며이 파일을 src / main / groovy에 넣습니다.

처음 두 가져 오기는 Java 파일이며,이 파일에는 org.apache.hadoop 가져 오기 명령문이 있습니다. 이 두 파일을 src / main / java에 넣었습니다.

import StartsWithCountMapper
import StartsWithCountReducer
import org.apache.hadoop.conf.Configured
import org.apache.hadoop.fs.Path
import org.apache.hadoop.io.IntWritable
import org.apache.hadoop.io.LongWritable
import org.apache.hadoop.io.Text
import org.apache.hadoop.mapreduce.Job
import org.apache.hadoop.mapreduce.Mapper
import org.apache.hadoop.mapreduce.Reducer
import org.apache.hadoop.mapreduce.lib.input.TextInputFormat
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat
import org.apache.hadoop.util.Tool
import org.apache.hadoop.util.ToolRunner

아래는 내 build.gradle 파일입니다.

apply plugin: 'groovy'
apply plugin: 'application'
version = '1.0'
mainClassName='CountGroovyJob'

repositories {
    mavenCentral()
}

dependencies {
    compile 'org.codehaus.groovy:groovy-all:2.0.0'
    compile 'org.apache.hadoop:hadoop-common:2.7.1'

}

task Createjar(type: Jar,dependsOn:[':compileJava',':compileGroovy']) {
    from files(sourceSets.main.output.classesDir)
    from configurations.runtime.asFileTree.files.collect { zipTree(it) }

    manifest {
        attributes 'Main-Class': mainClassName
    }
}

나는 의존성을 두어 아래에서 컴파일하려고 시도했다.

     compile 'org.apache.hadoop:hadoop-client:2.0.0-mr1-cdh4.0.1'
    compile 'org.apache.hadoop:hadoop-core:1.2.1'
    compile 'org.apache.hadoop:hadoop-hdfs:2.7.1'

하지만이 오류가 계속 발생합니다.

/Users/../../../gradle/buildSrc/src/main/java/StartsWithCountMapper.java:5: error: package org.apache.hadoop.io does not exist
import org.apache.hadoop.io.IntWritable;
                           ^
/Users/../../../gradle/buildSrc/src/main/java/StartsWithCountMapper.java:6: error: package org.apache.hadoop.io does not exist
import org.apache.hadoop.io.LongWritable;
                           ^
/Users/../../../gradle/buildSrc/src/main/java/StartsWithCountMapper.java:7: error: package org.apache.hadoop.io does not exist
import org.apache.hadoop.io.Text;

groovy 및 java 파일의 모든 import 문으로 jar를 컴파일하고 만들 수 있습니까?

편집하다 buildscrip을 포함 {}

apply plugin: 'groovy'
apply plugin: 'application'
version = '1.0'
mainClassName='CountGroovyJob'

repositories {
    mavenCentral()
}

dependencies {
    compile 'org.codehaus.groovy:groovy-all:2.0.0'
    compile 'org.apache.hadoop:hadoop-common:2.7.1'

}

task Createjar(type: Jar,dependsOn:[':compileJava',':compileGroovy']) {
    from files(sourceSets.main.output.classesDir)
    from configurations.runtime.asFileTree.files.collect { zipTree(it) }

    manifest {
        attributes 'Main-Class': mainClassName
    }
}

buildscript{
    repositories {
        mavenCentral()
    }

    dependencies {
        compile 'org.codehaus.groovy:groovy-all:2.0.0'
        compile 'org.apache.hadoop:hadoop-common:2.7.1'
    }
}

폴더 구조 :

 grad-proj
 |
 +-- build.gradle
 |    
 +-- src
    |  
    +-- main
       |
       +-- groovy
       |
       +-- java

해결법

  1. ==============================

    1.import 문은 buildSrc에 있고 main이 아닌 코드에 있습니다. 이는 빌드 스크립트 종속성 섹션에 종속성이 필요함을 의미합니다.

    import 문은 buildSrc에 있고 main이 아닌 코드에 있습니다. 이는 빌드 스크립트 종속성 섹션에 종속성이 필요함을 의미합니다.

    대신 기본 디렉토리에있는 소스에 적용되는 일반 종속성 섹션에 종속성을 적용합니다.

    build.gradle에 추가하십시오.

    buildscript{
        repositories {
            mavenCentral()
        }
    
        dependencies {
            compile 'org.codehaus.groovy:groovy-all:2.0.0'
            compile 'org.apache.hadoop:hadoop-common:2.7.1'
        }
    }
    
  2. from https://stackoverflow.com/questions/36039514/groovy-hadoop-jar-with-gradle-package-not-exist-error by cc-by-sa and MIT license