问题描述
在搭建Hadoop的开发环境的时候,发现maven爆红,因为hadoop-common
这个包引用了tools.jar
尝试解决
然后果断给pom.xml
里加上依赖:
<dependency>
<groupId>jdk.tools</groupId>
<artifactId>jdk.tools</artifactId>
<version>1.8</version>
<scope>system</scope>
<systemPath>${JAVA_HOME}/lib/tools.jar</systemPath>
</dependency>
发现这个依赖爆红,原因是Cannot resovle directry '$'{'JAVA_HOME}'
和Cannot resovle symbol JAVA_HOME
,那就把路径从${JAVA_HOME}
改成了${env.JAVA_HOME}
,还是不能解析路径,Google了一下,需要写成这个样子才行(idea确实也有这个提示):
<systemPath>${java.home}/lib/tools.jar</systemPath>
{%asset_img pic2.png 修改后的pom.xml%}
结果发现路径前半段解析出来了,前几行还是红色。原因是Cannot resolve file tools.jar
,顿时产生了疑问,我立马看看自己的环境变量里JAVA_HOME
目录结合刚刚写的路径有没有tools.jar
。结果发现没有问题。
cd $JAVA_HOME/lib
ls -l
问题解决
既然就只差这个tools.jar
没找到,说明路径不对,那么刚刚查看了JAVA_HOME
发现之前写的路径确实能找到。突然想是不是JAVA_HOME
和这个java.home
路径不一样?
自己写了个代码验证了一下:
public class Property {
public static void main(String[] args) {
String property = System.getProperty("java.home");
System.out.println(property);
}
}
输出结果:
/Library/Java/JavaVirtualMachines/jdk1.8.0_201.jdk/Contents/Home/jre
就比我的JAVA_HOME
多写了一个jre目录。真坑啊!
结论
最后把这个路径改一下,就没有报错了
<systemPath>${java.home}/../lib/tools.jar</systemPath>
希望这次的查错能对大家有帮助。多多支持哦~