Class#forNameはファイルシステムが大文字小文字の区別をしない場合にNoClassDefFoundErrorを投げることがある

タイトルのとおり。
通常、Class#forNameでクラスが見つからない場合はClassNotFoundExceptionが発生するが、
Windows上では以下のJUnitのテストコードのような挙動を示す。

package test;

import org.junit.Test;

public class TestMain {

  @Test
  public void test1() throws ClassNotFoundException {
    Class.forName("test.TestMain");// このクラスを呼び出す
  }

  @Test
  public void test2() throws ClassNotFoundException {
    Class.forName("java.lang.Thread");// rt.jarに入っているクラスを呼び出す
  }

  @Test(expected = ClassNotFoundException.class)
  public void test3() throws ClassNotFoundException {
    Class.forName("java.lang.thread");// rt.jarに入ってるクラスの大文字小文字の間違い
  }

  @Test(expected = NoClassDefFoundError.class)
  public void test4() throws ClassNotFoundException {
    Class.forName("test.testmain");// このクラスの大文字小文字の間違い
  }

}

まーじーかー・・・・・・
JVMのバグじゃないの?

Java 1.8.0_92