您如何解决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