1

I get the following error when trying to compile my aspectj project.

[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

The relevant part of pom is pasted below. Any ideas why I get this error?

<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>
Abe
  • 8,623
  • 10
  • 50
  • 74

1 Answers1

2

Looks like there was an issue with version 1.6.11. When I modified this to 1.6.1 the error went away.

My pom now looks like

Dependencies:

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

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

If you are using eclipse, the following maven-eclipse-plugin configuration allows the *.aj files in java src folders without issue and does not clean away the ajdt properties of the eclipse project when doing a 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>

Abe
  • 8,623
  • 10
  • 50
  • 74