[kaffe] java.lang.IllegalAccessError

Ito Kazumitsu kaz@maczuka.gcd.org
Thu Nov 13 07:11:02 2003


>>>>> ":" == Ito Kazumitsu <kaz@maczuka.gcd.org> writes:

:> I hope the last patch of mine will solve this.

But that patch will not work if the nesting of classes gets deeper:

bash-2.05b$ cat a/A.java 
package a;
public class A {
  protected class A1 {
    public A1() {}
  }
}
bash-2.05b$ cat b/B.java 
package b;
import a.A;
public class B extends A {
  public static void main(String[] args) {
    B b = new B();
    b.foo();
  }

  void foo() {
    B1 b1 = new B1();
    B1.B2 b2 = b1.new B2();
    B1.B2.B3 b3 = b2.new B3();
    B1.B2.B3.B4 b4 = b3.new B4();
    b1.bar();
    b2.bar();
    b3.bar();
    b4.bar();
  }

  class B1 {
    void bar() { A1 a1 = B.this.new A1(); }
    class B2 {
      void bar() { A1 a1 = B.this.new A1(); }
      class B3 {
        void bar() { A1 a1 = B.this.new A1(); }
        class B4 {
          void bar() { A1 a1 = B.this.new A1(); }
        }}}}
}
bash-2.05b$ java b.B
java.lang.IllegalAccessError: a/A$A1.<init>
   at b.B$B1$B2.bar (B.java:23)
   at b.B.foo (B.java:15)
   at b.B.main (B.java:6)