我正在尝试使用'mvn clean install'构建hadoop-2.4.0-src.大约一半成功完成,但HDFS projetc失败了:
Exception in thread "main" java.lang.AssertionError: Missing tools.jar at: /Library/Java/JavaVirtualMachines/jdk1.7.0_55.jdk/Contents/Home/Classes/classes.jar. Expression: file.exists()
....../Home/Classes/
不存在,tools.jar就在......../Home/lib
.我的$JAVA_HOME
环境变量肯定设置正确,错误消息中列出的JDK是正确的 - 它只是在该路径中查找错误的位置.我看到一些帖子,一个常见的问题是人们使用的是JRE而不是JDK,但我确信我的是JDK.
我从接受的答案中尝试了两个建议: 用Eclipse/Maven建立Hadoop - 缺少工件jdk.tools:jdk.tools:jar:1.6
......没有成功.将"依赖"块添加到Hadoop的pom.xml没有任何效果,对于第二个建议,我将相关版本号从1.6更改为1.7.我也尝试过类似问题的各种其他建议而没有成功.
which
返回我的期望:
$ which javac /Library/Java/JavaVirtualMachines/jdk1.7.0_55.jdk/Contents/Home/bin/javac
但是,JavaVM.framework/Versions的内容对我来说似乎很奇怪,因为它似乎没有列出1.7:
/System/Library/Frameworks/JavaVM.framework/Versions $ ls -al total 64 drwxr-xr-x 11 root wheel 374 May 10 11:05 ./ drwxr-xr-x 12 root wheel 408 May 10 11:05 ../ lrwxr-xr-x 1 root wheel 10 May 10 11:05 1.4@ -> CurrentJDK lrwxr-xr-x 1 root wheel 10 May 10 11:05 1.4.2@ -> CurrentJDK lrwxr-xr-x 1 root wheel 10 May 10 11:05 1.5@ -> CurrentJDK lrwxr-xr-x 1 root wheel 10 May 10 11:05 1.5.0@ -> CurrentJDK lrwxr-xr-x 1 root wheel 10 May 10 11:05 1.6@ -> CurrentJDK lrwxr-xr-x 1 root wheel 10 May 10 11:05 1.6.0@ -> CurrentJDK drwxr-xr-x 8 root wheel 272 May 10 11:05 A/ lrwxr-xr-x 1 root wheel 1 May 10 11:05 Current@ -> A lrwxr-xr-x 1 root wheel 59 May 10 11:05 CurrentJDK@ -> /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents
我对Java比较陌生,所以我无法弄清楚问题的根源在哪里 - 它是我的本地目录树,如奇怪的内容所示Versions
?Java配置不正确(尽管我已经在Eclipse中使用Java 1.7几周了但没有问题)?或者它是Hadoop的pom.xml的问题我需要以某种方式更新?
谢谢你的帮助.
如下解决我的mac上的问题:
cd /Library/Java/JavaVirtualMachines/jdk1.7.0_55.jdk/Contents/Home/ sudo mkdir Classes cd Classes/ sudo ln -s ../jre/lib/rt.jar classes.jar
参考:http: //ilovemylinux.blogspot.com/2013/05/maven-jspc-compile-error-with-java-7-on.html