2012-02-02 10 views
1

私のaspectjプロジェクトをコンパイルしようとすると、次のエラーが発生します。Mavenを使ったAspectJのコンパイルjava.lang.NoClassDefFoundError:org/aspectj/bridge/IMessageHolder

[INFO] --- aspectj-maven-plugin:1.4:compile (default) @ jetserver --- 
Feb 2, 2012 7:33:31 PM org.sonatype.guice.bean.reflect.LoadedClass 
WARNING: Error injecting: org.codehaus.mojo.aspectj.AjcCompileMojo 
java.lang.NoClassDefFoundError: org/aspectj/bridge/IMessageHolder 
    at java.lang.Class.getDeclaredConstructors0(Native Method) 

[ERROR] Failed to execute goal org.codehaus.mojo:aspectj-maven-plugin:1.4:compile (default) on project game-server: Execution default of goal org.codehaus.mojo:aspectj-maven-plugin:1.4:compile failed: Unable to load the mojo 'compile' in the plugin 'org.codehaus.mojo:aspectj-maven-plugin:1.4'. A required class is missing: org/aspectj/bridge/IMessageHolder 

以下、pomの関連部分を貼り付けます。なぜこのエラーが出るのですか?

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>aspectj-maven-plugin</artifactId> 
      <version>1.4</version> 
      <dependencies> 
       <dependency> 
        <groupId>org.aspectj</groupId> 
        <artifactId>aspectjrt</artifactId> 
        <version>1.6.11</version> 
       </dependency> 
       <dependency> 
        <groupId>org.aspectj</groupId> 
        <artifactId>aspectjtools</artifactId> 
        <version>1.6.11</version> 
       </dependency> 
      </dependencies> 
      <configuration> 
       <source>1.6</source> 
       <complianceLevel>1.6</complianceLevel> 
       <verbose>true</verbose> 
       <showWeaveInfo>true</showWeaveInfo> 
       <target>1.6</target> 
       <!-- The following sets up aspectj weaving path. jetserver jar has the 
        compiled aspect which is used to weave classes in this app --> 
       <aspectLibraries> 
        <aspectLibrary> 
         <groupId>org.menacheri</groupId> 
         <artifactId>jetserver</artifactId> 
         <version>0.1</version> 
        </aspectLibrary> 
       </aspectLibraries> 
      </configuration> 
      <executions> 
       <execution> 
        <goals> 
         <goal>compile</goal> 
         <goal>test-compile</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

答えて

2

バージョン1.6.11に問題があるようです。これを1.6.1に変更したところ、エラーは消えました。

私のポンポンが今

依存関係のようになります。あなたは日食、FOを使用している場合は

<plugin> 
<groupId>org.codehaus.mojo</groupId> 
<artifactId>aspectj-maven-plugin</artifactId> 
<version>1.4</version> 
<dependencies> 
    <dependency> 
     <groupId>org.aspectj</groupId> 
     <artifactId>aspectjrt</artifactId> 
     <version>1.6.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.aspectj</groupId> 
     <artifactId>aspectjtools</artifactId> 
     <version>1.6.1</version> 
    </dependency> 
</dependencies> 
<configuration> 
    <source>1.6</source> 
    <complianceLevel>1.6</complianceLevel> 
    <verbose>true</verbose> 
    <showWeaveInfo>true</showWeaveInfo> 
    <target>1.6</target> 
</configuration> 
<executions> 
    <execution> 
     <goals> 
      <goal>compile</goal> 
      <goal>test-compile</goal> 
     </goals> 
    </execution> 
</executions> 

<dependency> 
     <groupId>org.aspectj</groupId> 
     <artifactId>aspectjrt</artifactId> 
     <version>1.6.1</version> 
</dependency> 

プラグインmaven-eclipse-plugin設定を有効にすると、問題なくjava srcフォルダ内の* .ajファイルが作成され、mvn cleanを実行しているときにEclipseプロジェクトのajdtプロパティを削除することはありません。

<plugin> 
<groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-eclipse-plugin</artifactId> 
<version>2.8</version> 
<configuration> 
    <ajdtVersion>1.6</ajdtVersion> 
    <additionalProjectnatures> 
     <projectnature>org.eclipse.ajdt.ui.ajnature</projectnature> 
     <projectnature>org.springframework.ide.eclipse.core.springnature</projectnature> 
     <projectnature>org.eclipse.wst.common.project.facet.core.nature</projectnature> 
    </additionalProjectnatures> 
    <!-- Source includes is necessary to allow aj files in the java 
     folder, else eclipse may throw a filtering exception --> 
    <sourceIncludes> 
     <sourceInclude>**/*.aj</sourceInclude> 
    </sourceIncludes> 
    <!-- Download sources will make maven download and attach source files 
     where available --> 
    <downloadSources>true</downloadSources> 
    <downloadJavadocs>true</downloadJavadocs> 
</configuration> 

関連する問題