在适用于 Mac 的 jdk 1.7 中,com.sun.tools.javah.Main 的位置从 classes.jar 移动到 tools.jar。因此,Maven 的 maven-antrun-plugin 找不到运行 javah 任务并抛出 ClassNotFound 异常:
Caused by: java.lang.ClassNotFoundException: com.sun.tools.javah.Main
at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java :50)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:244)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:230)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:186)
at org.apache.tools.ant.taskdefs.optional.javah.SunJavah.compile(SunJavah.java:57)
... 47 more
1.7 位置:/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home/lib/tools.jar
1.6 位置:/Library/Java/JavaVirtualMachines/1.6.0_32-b05-420.jdk/Contents/Classes/classes.jar
这似乎是 maven 3.0.4 版的错误或失败。我考虑过让 tools.jar 成为插件依赖项,但这似乎并不正确。我尝试了这些解决方案,但我无法让它们工作:
maven:如何以独立于操作系统的方式加载 tools.jar/classes.jar?
在 maven 人员在 mac 上使用 jdk-1.7 解决 maven-antrun-plugin 之前有什么解决方法吗?