Mac上Maven项目“Cannot resolve file tools.jar“


问题描述

在搭建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>

希望这次的查错能对大家有帮助。多多支持哦~


文章作者: 夏军
文章链接: http://yoursite.com
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 夏军 !
评论
 上一篇
记一次ArrayStoreException错误 记一次ArrayStoreException错误
在学习Eureka的时候启动报了一个错误(因为粗心大意),CausedBy截图如下: 问题定位过程 可以看出主要原因是抛出了ArrayStoreException,遂用IDEA的异常断点进行debug,步骤如下: 在main方法打断点
2020-05-24
下一篇 
“Identity API Scope Approval UI”——Mac多出来的未知应用处理 “Identity API Scope Approval UI”——Mac多出来的未知应用处理
最近换了新Mac后发现在Launchpad上发现一个名字叫Identity API Scope Approval UI陌生的应用,我打赌我没有安装这个应用。尝试打开发现这玩意好像也没啥用,而且还时不时意外退出 一个没有啥用,还不知道咋来
  目录