7

我正在尝试Cascading在我的 Hadoop 项目中使用。我正在尝试实现Enterprise Data Workflows with Cascading书中给出的第一个示例。我已经编写了包含Cascading相关代码的 java 类,并且我有另一个build.graddle文件应该编译该 java 类并从中构建 jar 文件。

我的文件夹结构如下:

  • 主文件夹

    • 不耐烦

      • 主.java
      • 构建.gradle

我的build.gradle文件如下所示:

apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'eclipse'

archivesBaseName = 'impatient'
repositories {
    mavenLocal()
    mavenCentral()
    mavenRepo name: 'conjars', url: 'http://conjars.org/repo/'
}
ext.cascadingVersion = '2.1.0'
dependencies {
    compile( group: 'cascading', name: 'cascading-core', version: cascadingVersion )
    compile( group: 'cascading', name: 'cascading-hadoop', version: cascadingVersion )
}
jar {
    description = "Assembles a Hadoop ready jar file"
    doFirst {
        into( 'lib' ) {
            from configurations.compile
        }
    }
    manifest {
        attributes( "Main-Class": "impatient/Main" )
    }
}

当我gradle clean jar从命令提示符运行命令时,我收到构建成功消息。我尝试使用运行此 jar 文件

hadoop jar impatient.jar <input file path> <output file path>

命令,但它给了我Exception in thread "main" java.lang.ClassNotFoundException: impatient.Main例外。

所以我检查了 jar 文件的内容,发现那个 jar 不包含impatient/Main.class文件。

请注意,我对 gradle 一无所知

请有人告诉我gradle脚本是否有任何问题,或者我犯了一些错误。

谢谢 !!!

4

1 回答 1

10

将源文件移动到

main_folder/impatient/src/main/java/Main.java

但将 build.gradle 文件留在原处。

默认情况下,Gradle 使用src/main/javaandsrc/test/java来查找生产和测试 java 源(相对于根文件夹,impatient在您的情况下)

于 2013-09-13T06:57:14.123 回答