groovy hadoop jar与gradle - 包不存在错误 [英] groovy hadoop jar with gradle - package not exist error

查看:451
本文介绍了groovy hadoop jar与gradle - 包不存在错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正试图用Gradle 2.12创建一个groovy jar。 groovy文件具有以下导入语句,我将此文件放在 src / main / groovy



前两个import是java文件,其内部有 org.apache.hadoop import语句。我把这两个文件放在 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文件(使用 this

 应用插件:'groovy'
应用插件:'application'
版本='1.0'
mainClassName ='CountGroovyJob'

存储库{
mavenCentral()
}

依赖项{
编译'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)
来自configured.runtime.asFileTree。 files.collect {zipTree(it)}

manifest {
属性'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不存在
import org.apache.hadoop.io.IntWritable;
^
/Users/../../../gradle/buildSrc/src/main/java/StartsWithCountMapper.java:6:error:package org.apache.hadoop.io不存在
import org.apache.hadoop.io.LongWritable;
^
/Users/../../../gradle/buildSrc/src/main/java/StartsWithCountMapper.java:7:error:package org.apache.hadoop.io不存在
import org.apache.hadoop.io.Text;

如何使用groovy和java文件中的所有import语句编译和创建一个jar? p>

编辑
包含buildscrip {}

 应用插件:'groovy'
应用插件:'应用'
version ='1.0'
mainClassName ='CountGroovyJob'

repositories {
mavenCentral()
}

依赖关系{
compile'org.codehaus.groovy:groovy-all:2.0.0'
compile'org.apache。 hadoop:hadoop-common:2.7.1'

}

任务Createjar(类型:Jar,dependsOn:[':compileJava',':compileGroovy']){
from files(sourceSets.main.output.classesDir)
来自configured.runtime.asFileTree.files.collect {zipTree(it)}

manifest {
attributes'主类':mainClassName
}
}

buildscript {
repositories {
mavenCentral()
}

depe ndencies {
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


解决方案

buildSrc 而不是 main 中的代码中,这意味着依赖关系是构建脚本依赖关系部分所必需的。



相反,您将依赖关系应用于适用于 main 目录中的源的通用依赖关系部分。 / p>

添加到你的build.gradle:

  buildscript {
存储库{
mavenCentral()
}

依赖关系{
compile'org.codehaus.groovy:groovy-all:2.0.0'
compile 'org.apache.hadoop:hadoop-common:2.7.1'
}
}


I was trying to create a groovy jar with Gradle 2.12 . The groovy file has import statements as below and I put this file in src/main/groovy

The first two import are java files, which inturn have org.apache.hadoop imports statements. I put these two files in 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

And below is my build.gradle file (using this)

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
    }
}

I have tried to compile with below also, by putting them in dependencies

     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'

but I keep on receiving this error:

/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;

how can I compile and create a jar with all those import statements in groovy and java files?

EDIT to include 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'
    }
}

folder structure :

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

解决方案

The import statements are in code that is in buildSrc and not main, which means that the dependencies are required by the buildscript dependencies section.

Instead you are applying dependencies to the general dependencies section which applies to source which lives in the main directory.

Add to your build.gradle:

buildscript{
    repositories {
        mavenCentral()
    }

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

这篇关于groovy hadoop jar与gradle - 包不存在错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆