您如何解决Mac OS X中JDK中缺少tools.jar的问题?

从我的搜索中,我在这里找到了支持信息: 适用于Mac OS X的Java开发指南

tools.jar不存在。 通常位于此处的类将包含在classes.jar 。 依赖于tools.jar存在的脚本需要相应地重写。

如果重写是不可避免的,那怎么办?

在Mac OS X 10.6计算机上通过MacPorts安装的Tomcat 6上部署时遇到此问题。

这是我测试过的解决方案,它意味着maven配置没有变化,只需添加符号链接:

  • ln -s /Library/Java/JavaVirtualMachines/1.6.0_38-b04-436.jdk/Contents/Home/../Classes/classes.jar/Library/Java/JavaVirtualMachines/1.6.0_38-b04-436.jdk/Contents /Home/../Classes/tools.jar
  • ln -s /Library/Java/JavaVirtualMachines/1.6.0_38-b04-436.jdk/Contents/Home/../Classes/Library/Java/JavaVirtualMachines/1.6.0_38-b04-436.jdk/Contents/Home/。 ./lib

请享用! 布鲁诺

这类似于上面布鲁诺的回答; 但是,我不是绝对路径符号化的忠实粉丝。 以下是我处理符号链接的方法:

 cd /Library/Java/JavaVirtualMachines//Contents/Home sudo ln -s lib Classes cd lib/ sudo ln -s tools.jar classes.jar 

这样就可以更容易地对绝对路径进行符号链接。

好吧,你用grep搜索’tools.jar’。 如果classes.jar所在的地方,即期望tools.jar的地方,你可以改变这个词。

另一个想法是,创建一个从classes.jar到tools.jar的符号链接,如果你有足够的权限并且MacOS上的文件系统支持这个。 另外:复制。 可能更容易,但不要忘记更新,也许。

而不是使用Macports的Tomcat从Apache下载Tomcat。

6.0: http : //tomcat.apache.org/download-60.cgi

7.0: http : //tomcat.apache.org/download-70.cgi

编辑布鲁诺的答案,最后在相当多的maven尝试和错误之后对我有用。

如果您使用1.7,那么您应该能够将修订版更改为1.7。 我不知道这在Java 1.7中是否仍然存在问题。

 sudo sh -c '$(j_home=$(/usr/libexec/java_home -v 1.6) && ln -sf ${j_home}/../Classes/classes.jar ${j_home}/../Classes/tools.jar && ln -sf ${j_home}/../Classes ${j_home}/../lib)' 

我遇到了同样的问题,并以不同的方式解决了它。

  • 首先检查java_home是否设置为/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents而不是/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
  • 添加cobertura插件,确保systemPath正确引用classes.jar的位置

       org.codehaus.mojo cobertura-maven-plugin 2.6   com.sun tools 1.6 system ${java_home}/Classes/classes.jar    
  • 添加依赖项和排除工具

       org.codehaus.mojo cobertura-maven-plugin 2.6 test   com.sun tools    
  • 最后添加以下配置文件

       standard-jdk   ${java_home}/Home/lib/tools.jar    ${java_home}/Home/lib/tools.jar    apple-jdk   ${java_home}/Classes/classes.jar    ${java_home}/Classes/classes.jar   

现在运行maven,它应该成功生成Cobertura报告!

在interweb上找不到任何对它的引用,但我的Mac 1.7和1.8 jdk现在有tools.jar。

/Library/Java/JavaVirtualMachines/jdk1.7.0_12.jdk/Contents/Home/lib/tools.jar /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/lib/tools.jar / Library / Java /JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/Home/lib/tools.jar /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/lib/tools.jar / Library / Java / JavaVirtualMachines / jdk1 .8.0_51.jdk / Contents / Home / lib / tools.jar /Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home/lib/tools.jar/Library/Java/JavaVirtualMachines/1.6.0.jdk /Contents/Classes/classes.jar

classes.jar仅出现在mac 1.6 jdk中。

–Erik