[kaffe] difference between kaffe and Sun's JDK: IllegalAccessException

Ito Kazumitsu ito.kazumitsu at mail.hidec.co.jp
Sun Apr 18 19:41:02 PDT 2004


The attached program,

  - when run with Sun's JDK (java version "1.4.2_04"), throws
  - when run with Kaffe,  ends normally.

Is this Sun's bug incorrectly checking the accessibility,
or Kaffe's bug neglecting a necessary accessibility checking?
I would like to think this is Sun's bug.

bash$ cat a/A.java
package a;
import java.lang.reflect.Method;

public class A {
    public static void main(String[] args) throws Exception {
        new A();

    public A() throws Exception {
        new A1();

    private class A1 extends b.B {

        A1() throws Exception {

        public Method getFoo() {
            try {
                return A1.class.getMethod("foo", null);
            catch (NoSuchMethodException e) {
                return null;

        public void foo() {

bash$ cat b/B.java
package b;
import java.lang.reflect.Method;

public abstract class B {
    public abstract Method getFoo();
    public void execFoo() throws Exception {
        getFoo().invoke(this, null);
bash$ java a.A
java.lang.IllegalAccessException: Class b.B can not access a member of class a.A$A1 with modifiers "public"
	at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:57)
	at java.lang.reflect.Method.invoke(Method.java:317)
	at b.B.execFoo(B.java:7)
	at a.A$A1.<init>(A.java:16)
	at a.A.<init>(A.java:10)
	at a.A.main(A.java:6)
Exception in thread "main" bash$ 
bash$ kaffe a.A

More information about the kaffe mailing list