harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mikhail Markov (JIRA)" <j...@apache.org>
Subject [jira] Created: (HARMONY-1932) [drlvm] ClassLoader.defineClass() method should throw LinkageError if it's called more that once for the same class.
Date Fri, 20 Oct 2006 13:25:37 GMT
[drlvm] ClassLoader.defineClass() method should throw LinkageError if it's called more that
once for the same class.
--------------------------------------------------------------------------------------------------------------------

                 Key: HARMONY-1932
                 URL: http://issues.apache.org/jira/browse/HARMONY-1932
             Project: Harmony
          Issue Type: Bug
          Components: DRLVM
         Environment: IA32, WinXP
            Reporter: Mikhail Markov


The test below called 2 times method defineClass() of ClassLoader for the same class:
----------------------- Test.java -------------------------
public class Test {
    public static void main(String[] args) throws Exception {
        ClassLoader loader = new TestClassLoader();
        loader.loadClass("/TestClass");

        try {
            loader.loadClass("/TestClass");
            System.out.println("Test failed.");
        } catch (LinkageError le) {
            System.out.println("Test passed: " + le);
        }
    }

    static class TestClassLoader extends ClassLoader {
        /*
         * Byte array of bytecode equivalent to the following source code:
         *     public class TestClass {
         *     }
         */
        private byte[] classData = new byte[] {
            -54, -2, -70, -66, 0, 0, 0, 49, 0, 13,
            10, 0, 3, 0, 10, 7, 0, 11, 7, 0,
            12, 1, 0, 6, 60, 105, 110, 105, 116, 62,
            1, 0, 3, 40, 41, 86, 1, 0, 4, 67,
            111, 100, 101, 1, 0, 15, 76, 105, 110, 101,
            78, 117, 109, 98, 101, 114, 84, 97, 98, 108,
            101, 1, 0, 10, 83, 111, 117, 114, 99, 101,
            70, 105, 108, 101, 1, 0, 14, 84, 101, 115,
            116, 67, 108, 97, 115, 115, 46, 106, 97, 118,
            97, 12, 0, 4, 0, 5, 1, 0, 9, 84,
            101, 115, 116, 67, 108, 97, 115, 115, 1, 0,
            16, 106, 97, 118, 97, 47, 108, 97, 110, 103,
            47, 79, 98, 106, 101, 99, 116, 0, 33, 0,
            2, 0, 3, 0, 0, 0, 0, 0, 1, 0,
            1, 0, 4, 0, 5, 0, 1, 0, 6, 0,
            0, 0, 29, 0, 1, 0, 1, 0, 0, 0,
            5, 42, -73, 0, 1, -79, 0, 0, 0, 1,
            0, 7, 0, 0, 0, 6, 0, 1, 0, 0,
            0, 1, 0, 1, 0, 8, 0, 0, 0, 2,
            0, 9 };

        protected Class findClass(String name) throws ClassNotFoundException {
            if (name.equals("/TestClass")) {
                return defineClass(null, classData, 0, classData.length);
            } else {
                throw new ClassNotFoundException("Class " + name + " not found.");
            }
        }
    }
}
------------------------------------------------
Output on RI:
Test passed: java.lang.LinkageError: duplicate class definition: TestClass

Output on Harmony:
Test failed.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message