Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[aspectj-users] Can't compile basic mixin example

I am probably doing something really dumb here, but I can't seem to compile a basic mixin example under maven.  I am using the example code from AspectJ in Action by Ramnivas Laddad Chapter 5(Like Listing 5.15 in section 5.1.5).
I am packaging a basic Nameable mixin into a jar and that seems to work ok in that even though the files have the .java extension, the class files seem to build the aspect stuff  correctly including the NameableMixin$Impl.

I have ...

1.  src/main/java/ajia/mixin/Entity.java

package ajia.mixin;

public class Entity implements Nameable {
}

2. src/main/java/ajia/mixin/Nameable.java


package ajia.mixin;

public interface Nameable {
	public void setName(String name);
	public String getName();
	
	static aspect Impl {
	private String Nameable.name;
		public void Nameable.setName(String name) {
			this.name = name;
		}
		public String Nameable.getName() {
			return this.name;
		}
	}
}


which yields (as expected) ...

$ unzip -l target/myaspect-1.0-SNAPSHOT.jar 
Archive:  target/myaspect-1.0-SNAPSHOT.jar
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  2011-11-14 17:17   META-INF/
      127  2011-11-14 17:17   META-INF/MANIFEST.MF
        0  2011-11-14 17:17   ajia/
        0  2011-11-14 17:17   ajia/mixin/
     1767  2011-11-14 17:17   ajia/mixin/Nameable.class
     4613  2011-11-14 17:17   ajia/mixin/Nameable$Impl.class
     1681  2011-11-14 17:17   ajia/Nameable.class
     4511  2011-11-14 17:17   ajia/Nameable$Impl.class
      525  2011-11-14 17:17   builddef.lst
        0  2011-11-14 17:17   META-INF/maven/
        0  2011-11-14 17:17   META-INF/maven/ajia.mixin/
        0  2011-11-14 17:17   META-INF/maven/ajia.mixin/myaspect/
     1318  2011-11-14 16:47   META-INF/maven/ajia.mixin/myaspect/pom.xml
      110  2011-11-14 17:17   META-INF/maven/ajia.mixin/myaspect/pom.properties
---------                     -------
    17296                     15 files



Please let me know if any files in this jar are of interest.
Then I try to use this in another project but the build breaks with 

[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] <snipped>src/main/java/<blah blah>/MyMixinTarget.java:[14,7]  MyMixinTarget is not abstract and does not override abstract method setName(java.lang.String) in ajia/mixin/NameableMixin
[INFO] 1 error
[INFO] -------------------------------------------------------------

Not sure why this is happening.  Clearly the ajc is not getting involved where it should, and javac isn't looking for the aspect.  Must all mixin targets be under src/main/aspect?  

The pom.xml for the target project contains(among many other things) :

		<dependency>
			<groupId> ajia.mixin</groupId>
			<artifactId>myaspect</artifactId>
			<version>2.0.7-SNAPSHOT</version>
			<scope>compile</scope>
		</dependency>
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjweaver</artifactId>
			<version>1.6.11</version>
			<scope>compile</scope>
		</dependency>
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjrt</artifactId>
			<version>1.6.11</version>
		</dependency>

AND

			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>aspectj-maven-plugin</artifactId>
				<version>1.4</version>
				<configuration>
					<source>1.6</source>
					<target>1.6</target>
					<verbose>true</verbose>
					<outxml>false</outxml>
					<showWeaveInfo>true</showWeaveInfo>

					<weaveDependencies>
						<weaveDependency>
							<groupId>ajia.mixin</groupId>
							<artifactId>myaspects</artifactId>
						</weaveDependency>
					</weaveDependencies>
				</configuration>
				<executions>
					<execution>
						<goals>
							<goal>compile</goal>
						</goals>
					</execution>
				</executions>
			</plugin>




********************************************************************************
Other info:



$ ajc -version
AspectJ Compiler 1.6.6 (1.6.5 - Built: Wednesday Nov 4, 2009 at 04:40:09 GMT) - Eclipse Compiler 0.785_R33x, 3.3

$ java -version
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02, mixed mode)

$ mvn -version
Apache Maven 2.2.1 (r801777; 2009-08-06 12:16:01-0700)



Back to the top