2012-02-02 2 views
1

Я получаю следующую ошибку при попытке скомпилировать проект aspectj.AspectJ компиляция с maven throws 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 

Соответствующая часть помпона вставлена ​​ниже. Любые идеи, почему я получаю эту ошибку?

<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, ошибка исчезла.

Мой ПОМ теперь выглядит как

Зависимости:

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

Плагины:

<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> 

Если вы используете затмение, в FO llowing конфигурация maven-eclipse-plugin позволяет * .aj-файлам в папках java src без проблем и не очищает свойства ajdt проекта eclipse при выполнении mvn clean.

<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> 

Смежные вопросы