Thanks Alexy and Pavel. I created a jira for the same --> https://issues.apache.org/jira/browse/HARMONY-6297
Thanks and Regards, Mohan On Thu, Aug 6, 2009 at 10:05 AM, Alexey Varlamov < alexey.v.varla...@gmail.com> wrote: > 2009/8/5 Pavel Pervov <pmcfi...@gmail.com>: > > Ah. I've misread your original post. > > Harmony VM attempts to load outer class on some stage of processing > > inner class. This is not neccessary classloading issue. It may be > > reflection itself. > > Looking at the stack trace, it is indeed: > java.lang.NoClassDefFoundError: junit/framework/TestCase > [...] > at java.lang.ClassLoader.loadClass(ClassLoader.java:319) > at java.lang.VMClassRegistry.getEnclosingClass(VMClassRegistry.java) > at java.lang.Class.getEnclosingClass(Class.java:1065) > at > java.lang.reflect.ReflectExporter.hasSameTopLevelClass(ReflectExporter.java:176) > at > java.lang.reflect.ReflectExporter.allowAccess(ReflectExporter.java:103) > at > java.lang.reflect.ReflectExporter.checkMemberAccess(ReflectExporter.java:86) > at java.lang.reflect.Method.invoke(Method.java:311) > at ClassLoadTest.callMain(ClassLoadTest.java:9) > at ClassLoadTest.main(ClassLoadTest.java:13) > > It should be possible to add a workaround here, please file this issue to > JIRA. > > -- > Regards, > Alexey > > > > > 2009/8/5, Mohanraj Loganathan <mohanra...@gmail.com>: > >> I am getting the different output with HDK and RI with the following > >> scenario > >> > >> Step1: Compile TestInnerClass.java [1] by including junit.jar in the > >> classpath. > >> Step2: Through reflection call the innerclass > >> TestInnerClass$ExceptingEntryPoint main method (refer [2]) without > >> including the junit.jar in the classpath > >> > >> HDK: throws NoClassDefFoundError: junit/framework/TestCase > >> RI: prints "I am printing from TestInnerClass$ExceptingEntryPoint" > >> > >> Any thougts on this. > >> > >> P.S: One of the ANT unit-testcase implements this scenario due to which > 4 > >> tests are failing. > >> > >> [1] TestInnerClass .java > >> > >> import junit.framework.TestCase; > >> public class TestInnerClass extends TestCase{ > >> public static class ExceptingEntryPoint { > >> public static void main(String[] argv) { > >> System.out.println("I am printing from > >> TestInnerClass$ExceptingEntryPoint"); > >> } > >> } > >> } > >> > >> > >> [2] Testcase: ClassLoadTest.java > >> > >> import java.lang.reflect.Method; > >> public class ClassLoadTest { > >> public void callMain() throws Exception{ > >> String classname = "TestInnerClass$ExceptingEntryPoint"; > >> Class target = Class.forName(classname, true, > >> this.getClass().getClassLoader()); > >> Method main = target.getMethod("main", new Class[] > >> {String[].class}); > >> main.invoke(null, (Object[])new String[] {null}); > >> } > >> > >> public static void main(String[] args) throws Exception{ > >> new ClassLoadTest().callMain(); > >> } > >> } > >> > >> Thanks and Regards, > >> Mohan > >> > > > -- Mohan