JDK-4376513 : Class.forName() is case-insensitive in Windows
  • Type: Bug
  • Component: core-libs
  • Sub-Component: java.lang:reflect
  • Affected Version: 1.2.2
  • Priority: P4
  • Status: Open
  • Resolution: Unresolved
  • OS: windows_nt
  • CPU: x86
  • Submitted: 2000-10-04
  • Updated: 2012-09-28
Related Reports
Relates :  
Description

Name: rmT116609			Date: 10/04/2000


java version "1.2.2"
Classic VM (build JDK-1.2.2_006, native threads, symcjit)

Following is test code.

public class A
{
	public static void main(String[] args)
	{
		try {
			Class.forName(args[0]);
		} catch (Exception ex) {
			System.out.println(args[0] + " is bad class.");
			System.exit(1);
		}
		System.out.println(args[0] + " is good class.");
		System.exit(1);
	}
}

After compiling, run it.

D:\Home\nito>java A A
A is good class.

D:\Home\nito>java A a
Exception in thread "main" java.lang.NoClassDefFoundError: a (wrong name: A)
        at java.lang.ClassLoader.defineClass0(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$1(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at A.main(A.java:6)


The most probrem is that thread was stopped in ClassLoader with exception dump.
This probrem cannot handling in user code.
(Review ID: 110304) 
======================================================================