【问题标题】:Using javah maven-antrun-plugin with jdk 1.7, classes.jar became tools.jar在 jdk 1.7 中使用 javah maven-antrun-plugin,classes.jar 变成了 tools.jar
【发布时间】:2012-07-02 07:54:56
【问题描述】:

在 jdk 1.7 for Mac 中,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 成为插件依赖项,但这似乎并不正确。我尝试了这些解决方案,但无法让它们发挥作用:

JDK tools.jar as maven dependency

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

在 maven 人员在 mac 上使用 jdk-1.7 解决 maven-antrun-plugin 之前是否有任何解决方法?

【问题讨论】:

    标签: maven maven-antrun-plugin


    【解决方案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>
    

    【讨论】:

      猜你喜欢
      • 2020-11-08
      • 1970-01-01
      • 2012-05-30
      • 2015-06-19
      • 2018-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多