[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
Hi,
The attached program,
- when run with Sun's JDK (java version "1.4.2_04"), throws
java.lang.IllegalAccessException.
- 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 {
execFoo();
}
public Method getFoo() {
try {
return A1.class.getMethod("foo", null);
}
catch (NoSuchMethodException e) {
return null;
}
}
public void foo() {
System.out.println("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
foo
More information about the kaffe
mailing list