代码之家  ›  专栏  ›  技术社区  ›  user1207289

带有gradle的groovy hadoop jar-包不存在错误

  •  2
  • user1207289  · 技术社区  · 10 年前

    我试图用Gradle 2.12创建一个groovy jar 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
    

    下面是我的体型。渐变文件(使用 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
        }
    }
    

    我也尝试用下面的代码进行编译,将它们放在依赖项中

         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文件中的所有导入语句编译和创建一个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 回复  |  直到 9 年前
        1
  •  2
  •   RaGe    10 年前

    导入语句的代码位于 buildSrc 而不是 main ,这意味着buildscript依赖项部分需要依赖项。

    相反,您将依赖项应用于通用依赖项部分,该部分应用于位于 主要的 目录

    添加到您的build.gradle:

    buildscript{
        repositories {
            mavenCentral()
        }
    
        dependencies {
            compile 'org.codehaus.groovy:groovy-all:2.0.0'
            compile 'org.apache.hadoop:hadoop-common:2.7.1'
        }
    }
    
    推荐文章