[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[aspectj-dev] declare parents problem with non-public classes?

I'm running into problems using declare parents on non-public classes. When the code below is compiled, it runs fine (as expected). If, however, the package declaration is uncommented, and the declares parent is changed to the currently commented out line, then AJC reports the following:

RunnableAspect.aj:2 warning no match for this type name: mypackage$MyClass$MyInnerClass [Xlint:invalidAbsoluteTypeName]
[ajc] declare parents: mypackage.MyClass$MyInnerClass implements Runnable;
[ajc] ^^^^^^^^^^^^^^^^^^^^^^^^^^^

If the inner-class is defined as "public", then there is no problem with the compilation.

If the inner-class is moved outside of "MyClass", but defined in the same java file, the compilation fails as well.

This suggests that there is a problem with declare parents and non-public classes. Is this known/expected? If not, I'll be happy to file a bug report. I'm using the AspectJ 1.2.



// package mypackage;

public class MyClass {
 public MyClass() {
   MyInnerClass mic = new MyClass.MyInnerClass();
   if (mic instanceof Runnable)

 class MyInnerClass {
   public void run() {
     System.out.println("In MyInnerClass.run()!!");

 public static void main(String args[]) {
   new MyClass();


public aspect RunnableAspect {
 declare parents: MyClass$MyInnerClass implements Runnable;
 // declare parents: mypackage.MyClass$MyInnerClass implements Runnable;

Keven Ring               | "Oh no,  Not Again..."
The MITRE Corporation    |   Bowl of Petunias -
7515 Colshire Drive      |   The Hitchhikers Guide to the Galaxy
McLean VA 22102-7508     |
PH: (703)883-7026        |