1

Mac用のjdk1.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依存関係としてのJDKtools.jar

maven:OSに依存しない方法でtools.jar / classes.jarをロードする方法は?

Mavenの人々がMacでjdk-1.7を使用してMaven-antrun-pluginに対処するまでの回避策はありますか?

4

1 に答える 1

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>
于 2012-07-02T08:30:30.443 に答える