Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] Compile error

I just had this problem recently myself.  The trick seems to be to change the AspectJ dependencies for the aspectj-maven-plugin.  My config is below, but I use a private repo, so your artifacts would likely be different:


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

On Aug 13, 2008, at 8:01 PM, Andy Clement wrote:

Hi Joel,

That is certainly fixed in more recent builds, I just tried it:

C:\temp\canoworms>ajc -version
AspectJ Compiler 1.5.4 built on Thursday Dec 20, 2007 at 13:44:10 GMT

C:\temp\canoworms>ajc Ev*.java -1.5

C:\temp\canoworms\Ev.java:5 [error] The type new EventListener<Ev.SomeEvent>(){}
 must implement the inherited abstract method EventListener<Ev.SomeEvent>.handle
(EV)
EventListener<SomeEvent> s = new EventListener<SomeEvent>() {
                                 ^^^^^^^^^^^^^^^^^^^^^^^^^

1 error


C:\temp\canoworms>c:\aspectj161\setajc.bat

C:\temp\canoworms>set ASPECTJ_HOME=c:\aspectj161

C:\temp\canoworms>ajc -version
AspectJ Compiler 1.6.1 (1.6.1 - Built: Thursday Jul 3, 2008 at 18:35:41 GMT) - Eclipse Compiler 0.785_R33x, 3.3

C:\temp\canoworms>ajc Ev*.java -1.5

no errors.

However, I don't know how to adjust your maven stuff...


Andy.

2008/8/13 <joel@xxxxxxxxxxx>
I have an interface like this:

public interface EventListener<EVENTTYPE>
{
       <EV extends EVENTTYPE> void handle(EV event);
}

And I'm creating a class that implements it such as:

EventListener<SomeEvent> s = new EventListener<SomeEvent>() {
                       public <V extends SomeEvent> void handle(final V event)
                       {
// ...
                       }
}

I have tried it in non-anonymous case as well.
Compilation gives an error saying:

The type new EventListener<SomeEvent>(){} must implement the inherited
abstract method EventListener<SomeEvent>.handle(EV)

When using the eclipse or javac compiler, there is no error.

To complicate the question, I'm using maven for build, this for the compiler:
                               <groupId>org.codehaus.mojo</groupId>
                               <artifactId>aspectj-maven-plugin</artifactId>
                               <version>1.1-SNAPSHOT</version>

And I think that results in aspectj 1.5.4 being used, though if you
know how to change it so it will use more recent, please tell me.

Thanks!
_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/aspectj-users

_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/aspectj-users


Back to the top