Windows8でJavaのos.versionが「Windows NT (unknown)」になる件

(2012/10/31追記:Java 6系も6u38で問題が解消されます)
Windows 8の環境で、JavaのSystem.getProperty("os.name")が「Windows NT (unknown)」と返ってくる(返ってきた)件についてメモ。

結論から書くと、Java 7のUpdate 6で修正されていて、正しく「Windows 8」の文字列が得られるようになっています。
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7170169

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=2224977

ソースはこの辺です。
http://hg.openjdk.java.net/jdk7u/jdk7u-dev/jdk/rev/3562fc7500a4

Windows 8、つまりNTカーネル 6.2に対応する分岐が追加されています。


if (ver.wProductType == VER_NT_WORKSTATION) {
 switch (ver.dwMinorVersion) {
  case 0: sprops.os_name = “Windows Vista”; break;
  case 1: sprops.os_name = “Windows 7”; break;
  case 2: sprops.os_name = “Windows 8”; break; // ★この辺
  default: sprops.os_name = “Windows NT (unknown)”;
 }
} else {

続きを読む Windows8でJavaのos.versionが「Windows NT (unknown)」になる件