2012-07-02 32 views
1

在Mac的jdk 1.7中,com.sun.tools.javah.Main的位置從classes.jar移到了tools.jar。因此,Maven的Maven的antrun-插件無法找到運行JAVAH任務和ClassNotFound的異常被拋出:在jdk 1.7中使用javah maven-antrun-plugin,classes.jar變成了tools.jar

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

這似乎是行家的3.0版中的錯誤或失敗0.4。我考慮製作tools.jar插件依賴項,但這看起來不太合適。我嘗試了這些解決方案,但我不能讓他們的工作:

JDK tools.jar as maven dependency

maven: How to load tools.jar/classes.jar in an OS independent way?

的任何工作,直到周圍的鄉親行家解決Maven的antrun-插件兼容Mac JDK-1.7?

回答

1

答案是將tools.jar添加爲插件的依賴項。包括以下部分從<dependencies> ... </dependencies>

<build> 
<plugins> 
    <plugin> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <version>1.7</version> 
    <executions> 
     <execution> 
     <phase>compile</phase> 
     <configuration> 
      <target> 
      <property name="runtime_classpath" refid="maven.runtime.classpath"/> 
      <property name="test_classpath" refid="maven.test.classpath"/> 
      <property name="plugin_classpath" refid="maven.plugin.classpath"/> 

      <echo message="runtime classpath: ${runtime_classpath}"/> 
      <echo message="test classpath: ${test_classpath}"/> 
      <echo message="plugin classpath: ${plugin_classpath}"/> 

      </target> 
     </configuration> 
     <goals> 
      <goal>run</goal> 
     </goals> 
     </execution> 
    </executions> 
    <dependencies> 
     <dependency> 
     <groupId>com.sun</groupId> 
     <artifactId>tools</artifactId> 
     <version>1.7</version> 
     <scope>system</scope> 
     <systemPath>${java.home}/../lib/tools.jar</systemPath> 
     </dependency> 
    </dependencies> 
    </plugin> 
</plugins> 
</build>