级联示例无法编译?

42
在shell中,我在Impatient/part1目录下输入了gradle cleanJar命令。输出如下所示。错误提示为“找不到org.apache.hadoop.mapred.JobConf的类文件”。为什么编译失败了?
:clean UP-TO-DATE
:compileJava
Download http://conjars.org/repo/cascading/cascading-core/2.0.1/cascading-core-2.0.1.pom
Download http://conjars.org/repo/cascading/cascading-hadoop/2.0.1/cascading-hadoop-2.0.1.pom
Download http://conjars.org/repo/riffle/riffle/0.1-dev/riffle-0.1-dev.pom
Download http://repo1.maven.org/maven2/org/slf4j/slf4j-api/1.6.1/slf4j-api-1.6.1.pom
Download http://repo1.maven.org/maven2/org/slf4j/slf4j-parent/1.6.1/slf4j-parent-1.6.1.pom
Download http://repo1.maven.org/maven2/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1.pom
Download http://conjars.org/repo/thirdparty/jgrapht-jdk1.6/0.8.1/jgrapht-jdk1.6-0.8.1.pom
Download http://repo1.maven.org/maven2/org/codehaus/janino/janino/2.5.16/janino-2.5.16.pom
Download http://conjars.org/repo/cascading/cascading-core/2.0.1/cascading-core-2.0.1.jar
Download http://conjars.org/repo/cascading/cascading-hadoop/2.0.1/cascading-hadoop-2.0.1.jar
Download http://conjars.org/repo/riffle/riffle/0.1-dev/riffle-0.1-dev.jar
Download http://repo1.maven.org/maven2/org/slf4j/slf4j-api/1.6.1/slf4j-api-1.6.1.jar
Download http://repo1.maven.org/maven2/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1.jar
Download http://conjars.org/repo/thirdparty/jgrapht-jdk1.6/0.8.1/jgrapht-jdk1.6-0.8.1.jar
Download http://repo1.maven.org/maven2/org/codehaus/janino/janino/2.5.16/janino-2.5.16.jar
/home/is_admin/lab/cascading/Impatient/part1/src/main/java/impatient/Main.java:50: error: cannot access JobConf
    Tap inTap = new Hfs( new TextDelimited( true, "\t" ), inPath );
                ^
  class file for org.apache.hadoop.mapred.JobConf not found
1 error
:compileJava FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':compileJava'.
> Compilation failed; see the compiler error output for details.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 22.599 secs

12
我认为这个问题不应该关闭:问题出在gradle和Java 7不兼容,任何使用7.x JDK进行级联教程的人都会遇到这个问题。答案是,可以使用Java 6 JDK来完成级联教程,我很乐意添加这个解决方法。 - Paul Sanwald
请参见 https://groups.google.com/d/topic/cascading-user/XEZapg4uqdI/discussion - hertzsprung
我相信这是因为您没有安装Hadoop,而wordcount/build.gradle中有“{transitive=false}”,因此它不会安装它。去掉它,就可以构建了。 - Gabriel Burt
我认为这个类在jar包中被遗漏了,请检查您的存储库中的jar包。 - Learner
1
我认为 classpath 中缺少 hadoop-conf jar。请告诉我您正在运行此程序的 hadoop 版本。 - user1651008
如果您使用的是OSX系统,您可以在此处下载Java 6 - https://developer.apple.com/downloads。搜索Java 6,"Java for OS X 2013-005 Developer Package"即可。 - bgs
5个回答

1
将hadoop分发中的hadoop-core-1.x.y.jar添加到路径中。
这在CoPA示例中对我有效。我添加到eclipse构建路径中。
将此添加到gradle dependencies{}部分
compile( group: 'org.apache.hadoop', name: 'hadoop-core', version: '1.2.0' )

1

尝试使用Java 6,因为gradle在Java 7上会存在一些已知问题。


0
今天我在尝试《急切地学习级联》教程时遇到了同样的问题。我已经解决了这个问题,只需在build.gradle文件的dependencies部分添加以下内容即可:
compile 'org.apache.hadoop:hadoop-client:2.3.0'

我想使用Hadoop 2.3.0,但我猜你可以选择自己的Hadoop版本。

附言:为了使用第一个hadoop-mapred包,您必须添加以下内容:

compile 'org.apache.hadoop:hadoop-mapred:0.22.0'

您可以在这里找到所有与Hadoop相关的存储库。


0

谢谢Lalit, 添加下面这行代码对我很有帮助,而且不需要更改任何Java版本。

compile( group: 'org.apache.hadoop', name: 'hadoop-core', version: '1.2.0' )

或者,我甚至可以将hadoop-core jar添加到类路径中,并在gradle路径中提及它


0

看起来是找不到类,请检查构建路径条目中的库。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接