Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-4042163

Class.forName() on Windows is case-insensitive (excluding zips)

XMLWordPrintable

    • 1.1.4
    • x86
    • generic, windows_nt
    • Not verified

      I thought that an invariant of a successful Class.forName() was

      Class.forName(X).getName().equals(X);

      We rarely (before finding this bug to workaround) ever check the
      name of a Class returned by Class.forName().

      On Windows 95 (at least, haven't verified on NT)

      If there is a file XyZ.class containing class XyZ, then I would
      have expected Class.forName("xyz") or Class.forName("XYZ") to fail,
      as they do on Solaris.

      However, this is not the case. Any capitalization of the class name will
      return the same result, class XyZ.

      First, this is a compatibility issue. Second, I thought Java was a case-sensitive language.

      Simplest test code:

      public class CfN {

        public static void main(String[] args) throws Throwable {
          Class c = Class.forName(args[0]);
          System.err.println(c);
          System.err.println("correct name? "+(c.getName().equals(args[0])));
        }

      }

            dconnellsunw David Connelly (Inactive)
            duke J. Duke
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: