环境:
Apache Ant(TM) version 1.8.2 compiled on December 3 2011
java version "1.7.0_21"
Ubuntu-12.04-i386
Hadoop-1.0.4
问题:
执行ant compile-contrib -D libhdfs=1 -D fusedfs=1命令编译hadoop的fuse-dfs时,出现如下错误
经查资料是jdk的兼容性问题。
直接修改文件hadoop-1.0.4/src/contrib/gridmix/src/java/org/apache/hadoop/mapred/gridmix/Gridmix.java的396行。
原来的代码:
private <T> String getEnumValues(Enum<? extends T>[] e) {
StringBuilder sb = new StringBuilder();
String sep = "";
for (Enum<? extends T> v : e) {
sb.append(sep);
sb.append(v.name());
sep = "|";
}
return sb.toString();
}
去掉类型T,修改后的代码为:
private String getEnumValues(Enum<?>[] e) {
StringBuilder sb = new StringBuilder();
String sep = "";
for (Enum<?> v : e) {
sb.append(sep);
sb.append(v.name());
sep = "|";
}
return sb.toString();
}
再次编译,即可编译成功。
参考资料:
http://abloz.com/2013/02/04/compile-hadoop-1-0-4-libhdfs-library.html
http://dbua.iteye.com/blog/1635247