FULL PRODUCT VERSION :
java version "1.6.0"
Java(TM) SE Runtime Environment (build 1.6.0-b105)
Java HotSpot(TM) Client VM (build 1.6.0-b105, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows XP [Version 5.1.2600]
A DESCRIPTION OF THE PROBLEM :
Example below throws a runtime exception
Exception in thread "main" java.lang.IllegalAccessError: tried to access method
ab.A.m()V from class c.C
at c.C.c(C.java:8)
at D.main(D.java:5)
It compiles and runs w/o exception in jdk 1.5.
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
either a compile time error or no error as in jdk 1.5
ACTUAL -
Exception in thread "main" java.lang.IllegalAccessError: tried to access method
ab.A.m()V from class c.C
at c.C.c(C.java:8)
at D.main(D.java:5)
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
package ab;
public abstract class A{
protected static void m(){
System.out.println("A.m()");
}
}
-----------------------------------------------------------------------
package ab;
public abstract class B extends A{
}
-----------------------------------------------------------------------
package c;
import ab.A;
import ab.B;
public class C extends A{
public static void c(){
B.m();
}
}
------------------------------------------------------------------------
import c.C;
public class D {
public static void main(String [] argv){
C.c();
}
}
------------------------------------------------------------------------
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
change a call B.m() to A.m()
Release Regression From : 6
The above release value was the last known release where this
bug was not reproducible. Since then there has been a regression.